diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8cdc57568..f6491c0557 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -569,7 +569,7 @@ jobs: publish_dir: gh-pages keep_files: true - saw-core-rocq-tests: + rocq-builds: needs: [build] strategy: fail-fast: false @@ -626,6 +626,17 @@ jobs: shell: bash run: opam exec -- make -j + # Regenerate the test .v files, since we don't have the ones from the + # test run and rebuilding them isn't super expensive. + - working-directory: otherTests/saw-core-rocq + shell: bash + run: SAW=saw sh ./test.sh + + # Now build, or try to build, all the output files. + - working-directory: otherTests/saw-core-rocq + shell: bash + run: opam exec -- make -j rocq + crux-mir-comp-tests: needs: [build] strategy: @@ -1197,7 +1208,7 @@ jobs: runs-on: ubuntu-24.04 needs: - build - - saw-core-rocq-tests + - rocq-builds - crux-mir-comp-tests - saw-remote-api-tests - cabal-test diff --git a/CHANGES.md b/CHANGES.md index e553428b42..60ce0fed74 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -76,6 +76,9 @@ This release supports [version ## Bug Fixes +* The Rocq exporter now generates more or less normal width output + instead of cramming everything onto one very long line. + * Fix bug in the `rme` solver causing the `<` operator to be treated as `<=`. * Avoid exponential blow-up when generating uninterpreted functions. diff --git a/intTests/support/test-and-diff-rocq.sh b/intTests/support/test-and-diff-rocq.sh new file mode 100644 index 0000000000..ee0d0ce3ab --- /dev/null +++ b/intTests/support/test-and-diff-rocq.sh @@ -0,0 +1,205 @@ +# test-and-diff-rocq.sh: variant test-and-diff for the Rocq exporter tests. +# +# usage: sh ../../intTests/support/test-and-diff.sh [verb] +# where [verb] is the same as in the base test-and-diff. +# +# This version runs all SAW files *.saw like test-and-diff. But it +# also expects each one to generate some number of output .v files; it +# also diffs those against reference versions. +# +# The output .v files must be numbered using the form foo_1.v, +# foo_2.v, etc. The files foo_1.v.good and foo_2.v.good should +# correspondingly exist. The numbering starts at 1. +# +# Alternatively they can be named foo_{1,2,3,...}_prove0.v. +# +# It does not support SAW repl scripts (*.isaw) for simplicity, nor +# does it support output filtering stuff that isn't relevant to this +# use case. +# +# Note: we assume all .v files are test output and the clean rule may +# clobber them. Don't put your own handwritten files in the test dir. + +# Get the list of tests. +# +# Note that in some shells (and depending on settings) asking for +# *.saw when there aren't any will yield "*.saw" rather than +# generating an error or an empty list. +TESTS= +for SCRIPT in *.saw; do + if [ "$SCRIPT" = "*.saw" ]; then + break + fi + BASE=${SCRIPT%.saw} + TESTS="$TESTS $BASE" +done +if [ "$TESTS" = "" ]; then + echo "$0: Found no files matching *.saw" 1>&2 + exit 1 +fi + +# shell function for the run-tests op +run-tests() { + for TEST in $TESTS; do + # Remove any existing test.log first as a precaution. This + # protects against misreading the results if the whole run + # gets killed before a new test.log gets produced. + # Also remove any corresponding .v files. + rm -f $TEST.log + rm -f ${TEST}_*.v + + # run the test + # (do not fail if saw does, instead log it) + echo "$SAW $TEST.saw" + $SAW $TEST.saw > $TEST.log 2>&1 || echo FAILED >> $TEST.log + + # Check the output against the expected version. + # Note: because we (intentionally) aren't using set -e, we + # don't need to failure-protect this with || true. + # Send any errors from diff to the output so they get seen. + diff -u $TEST.log.good $TEST.log > $TEST.log.diff 2>&1 + echo "diff -u $TEST.log.good $TEST.log" + + # Now diff the output .v files. Count up until we get to + # a number where neither $TEST_$I.v nor $TEST_SI.v.good + # exists. + I=1 + while :; do + TESTX=${TEST}_$I + TESTY=${TEST}_${I}_prove0 + if [ -f "$TESTX.v" ] || [ -f "$TESTX.v.good" ]; then + diff -u "$TESTX.v.good" "$TESTX.v" > "$TESTX.v.diff" + echo "diff -u $TESTX.v.good $TESTX.v" + I=$(( $I + 1 )) + elif [ -f "$TESTY.v" ] || [ -f "$TESTY.v.good" ]; then + diff -u "$TESTY.v.good" "$TESTY.v" > "$TESTY.v.diff" + echo "diff -u $TESTY.v.good $TESTY.v" + I=$(( $I + 1 )) + else + break + fi + done + done +} + +# shell function for the show-diffs op +show-diffs() { + # We assume all *.diff files belong to us, so we can just do + # "cat *.diff" rather than iterating over the known filenames. + cat *.diff +} + +# shell function for the check-diffs op +check-diffs() { + LINES=$(cat *.diff 2>/dev/null | wc -l) + if [ $LINES -gt 0 ]; then + cat 1>&2 <&2 + echo "$0: Cannot update reference outputs" 1>&2 + exit 1 + fi + } + for TEST in $TESTS; do + checkonce $TEST.log + I=1 + while :; do + TESTX=${TEST}_$I + TESTY=${TEST}_${I}_prove0 + if [ -f "$TESTX.v" ] || [ -f "$TESTX.v.good" ]; then + checkonce "$TESTX.v" + I=$(( $I + 1 )) + elif [ -f "$TESTY.v" ] || [ -f "$TESTY.v.good" ]; then + checkonce "$TESTY.v" + I=$(( $I + 1 )) + else + break + fi + done + done + + once () { + if ! [ -f $1.good ] || \ + ! diff -q $1.good $1 >/dev/null; then + echo "cp $1 $1.good" + cp $1 $1.good + fi + } + for TEST in $TESTS; do + once $TEST.log + I=1 + while :; do + TESTX=${TEST}_$I + TESTY=${TEST}_${I}_prove0 + if [ -f "$TESTX.v" ] || [ -f "$TESTX.v.good" ]; then + once "$TESTX.v" + I=$(( $I + 1 )) + elif [ -f "$TESTY.v" ] || [ -f "$TESTY.v.good" ]; then + once "$TESTY.v" + I=$(( $I + 1 )) + else + break + fi + done + done +} + +# shell function for the clean op +clean() { + echo "rm -f *_[0-9]*.v *.log *.diff" + rm -f *_[0-9]*.v *.log *.diff +} + +# shell function for the test op +test() { + run-tests + show-diffs + check-diffs +} + +# run the requested operations +if [ $# = 0 ]; then + test +else + for VERB in "$@"; do + case "$VERB" in + test) + test + ;; + run-tests) + run-tests + ;; + show-diffs|show) # allow "show" as short form + show-diffs + ;; + check-diffs|check) # allow "check" as short form + check-diffs + ;; + good) + good + ;; + clean) + clean + ;; + *) + echo "$0: unknown action $VERB" 1>&2 + exit 1 + ;; + esac + done +fi + +# done +exit 0 diff --git a/otherTests/saw-core-rocq/.gitignore b/otherTests/saw-core-rocq/.gitignore index ef6e6ae88d..73635c0bbd 100644 --- a/otherTests/saw-core-rocq/.gitignore +++ b/otherTests/saw-core-rocq/.gitignore @@ -1,4 +1,13 @@ -test_offline_rocq*_prove0.v *.log -*.rawlog +*.v *.log.diff +*.v.diff + +.depend +.lia.cache +*.vo +*.vok +*.vos +*.glob +*.vo.diff +.*.aux diff --git a/otherTests/saw-core-rocq/Makefile b/otherTests/saw-core-rocq/Makefile index 704eb2e44a..20a5210b79 100644 --- a/otherTests/saw-core-rocq/Makefile +++ b/otherTests/saw-core-rocq/Makefile @@ -1,7 +1,34 @@ +ROCQDIR=../../saw-core-rocq/rocq + +ROCQ=rocq +ROCQFLAGS=\ + -Q $(ROCQDIR)/generated/CryptolToRocq CryptolToRocq \ + -Q $(ROCQDIR)/handwritten/CryptolToRocq CryptolToRocq + +# Note: to load one of these into rocqide, you can do +# rocqide -f ../../saw-core-rocq/rocq/_RocqProject file.v +# +# However, for either that or the "make rocq" build you must first +# build saw-core-rocq/rocq. + all: sh ./test.sh clean: sh ./test.sh clean - rm -f test_offline_rocq*_prove0.v + rm -f *.vo *.vo.diff + +rocq: + for f in *.v; do $(MAKE) $${f%.v}.vo || exit 1; done + cat *.vo.diff + cat *.vo.diff | awk '{ print "Unexpected test diffs"; exit (1); }' + +%.vo: %.v + $(ROCQ) c $(ROCQFLAGS) $< >$@.log 2>&1 || echo FAILED >> $@.log + diff -u $@.log.good $@.log > $@.diff || true + +rocqdepend: + $(ROCQ) dep $(ROCQFLAGS) *.v > .depend + +-include .depend -.PHONY: all clean +.PHONY: all clean rocq diff --git a/otherTests/saw-core-rocq/test.sh b/otherTests/saw-core-rocq/test.sh index 17f965a372..8cfc950861 100755 --- a/otherTests/saw-core-rocq/test.sh +++ b/otherTests/saw-core-rocq/test.sh @@ -1 +1 @@ -exec ${TEST_SHELL:-bash} ../../intTests/support/test-and-diff.sh "$@" +exec ${TEST_SHELL:-bash} ../../intTests/support/test-and-diff-rocq.sh "$@" diff --git a/otherTests/saw-core-rocq/test_arithmetic.log.good b/otherTests/saw-core-rocq/test_arithmetic.log.good index 96da67c1bc..b3716520b7 100644 --- a/otherTests/saw-core-rocq/test_arithmetic.log.good +++ b/otherTests/saw-core-rocq/test_arithmetic.log.good @@ -1,352 +1 @@ Loading file "test_arithmetic.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.PRingSeqBool var__0 in - let var__4 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2 in - CryptolPrimitivesForSAWCore.ecPlus var__1 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecMul var__1 var__3 (CryptolPrimitivesForSAWCore.ecMinus var__1 var__3 var__4 var__4) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_DivZero : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - CryptolPrimitivesForSAWCore.ecDiv var__1 (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 var__2). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_Div : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - CryptolPrimitivesForSAWCore.ecDiv var__1 (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_Mod : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - CryptolPrimitivesForSAWCore.ecMod var__1 (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_AndOr : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.PLogicSeqBool var__0 in - CryptolPrimitivesForSAWCore.ecOr var__1 var__3 (CryptolPrimitivesForSAWCore.ecAnd var__1 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) var__1 var__2)) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) var__1 var__2). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_Xor : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - CryptolPrimitivesForSAWCore.ecXor var__1 (CryptolPrimitivesForSAWCore.PLogicSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) var__1 var__2). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_Complement : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecCompl var__1 (CryptolPrimitivesForSAWCore.PLogicSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_Negate : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecNeg var__1 (CryptolPrimitivesForSAWCore.PRingSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_ShiftLeft : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecShiftL var__0 SAWCoreScaffolding.Integer Init.Datatypes.bool CryptolPrimitivesForSAWCore.PIntegralInteger CryptolPrimitivesForSAWCore.PZeroBit (CryptolPrimitivesForSAWCore.ecNumber var__0 (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestArith_ShiftRight : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecShiftR var__0 SAWCoreScaffolding.Integer Init.Datatypes.bool CryptolPrimitivesForSAWCore.PIntegralInteger CryptolPrimitivesForSAWCore.PZeroBit (CryptolPrimitivesForSAWCore.ecNumber var__0 (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - -Definition head (n : CryptolPrimitivesForSAWCore.Num) (a : Type) {Inh_a : SAWCoreScaffolding.Inhabited a} (xs : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.tcAdd (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) n) a) : a := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecAt (CryptolPrimitivesForSAWCore.tcAdd (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) n) a var__1 (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) xs (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - - -Definition sext (m : CryptolPrimitivesForSAWCore.Num) (n : CryptolPrimitivesForSAWCore.Num) (x : CryptolPrimitivesForSAWCore.seq n Init.Datatypes.bool) : CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) in - let var__1 := CryptolPrimitivesForSAWCore.tcSub m n in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.tcSub n var__0 in - let var__4 := CryptolPrimitivesForSAWCore.tcAdd var__0 var__3 in - let var__5 := CryptolPrimitivesForSAWCore.ecZero var__2 (CryptolPrimitivesForSAWCore.PZeroSeqBool var__1) in - let var__6 := CryptolPrimitivesForSAWCore.tcAdd var__1 n in - SAWCoreScaffolding.coerce (CryptolPrimitivesForSAWCore.seq var__6 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.seq_cong1 var__6 m Init.Datatypes.bool ltac:(solveUnsafeAssert)) (CryptolPrimitivesForSAWCore.ecCat var__1 n Init.Datatypes.bool (if head var__3 Init.Datatypes.bool (SAWCoreScaffolding.coerce (CryptolPrimitivesForSAWCore.seq n Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.seq var__4 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.seq_cong1 n var__4 Init.Datatypes.bool ltac:(solveUnsafeAssert)) x) then CryptolPrimitivesForSAWCore.ecCompl var__2 (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) var__5 else var__5) x). - - - -Definition TestArith_SignExtend : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - sext (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__0 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - -Definition zext (m : CryptolPrimitivesForSAWCore.Num) (n : CryptolPrimitivesForSAWCore.Num) (x : CryptolPrimitivesForSAWCore.seq n Init.Datatypes.bool) : CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.tcSub m n in - let var__1 := CryptolPrimitivesForSAWCore.tcAdd var__0 n in - SAWCoreScaffolding.coerce (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.seq_cong1 var__1 m Init.Datatypes.bool ltac:(solveUnsafeAssert)) (CryptolPrimitivesForSAWCore.ecCat var__0 n Init.Datatypes.bool (CryptolPrimitivesForSAWCore.ecZero (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PZeroSeqBool var__0)) x). - - - -Definition TestArith_ZeroExtend : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - zext (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__0 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - diff --git a/otherTests/saw-core-rocq/test_arithmetic.saw b/otherTests/saw-core-rocq/test_arithmetic.saw index 0fab549b88..93e0216ba6 100644 --- a/otherTests/saw-core-rocq/test_arithmetic.saw +++ b/otherTests/saw-core-rocq/test_arithmetic.saw @@ -1,36 +1,36 @@ // Test: Arithmetic, bitwise operations. let t1 = {{ (5 : [8]) + (3 - 3) * 2 }}; -write_rocq_term "TestArith" [] [] "" t1; +write_rocq_term "TestArith" [] [] "test_arithmetic_1.v" t1; let t2 = {{ (5 : [8]) / 0 }}; -write_rocq_term "TestArith_DivZero" [] [] "" t2; +write_rocq_term "TestArith_DivZero" [] [] "test_arithmetic_2.v" t2; let t3 = {{ (10 : [8]) / 2 }}; -write_rocq_term "TestArith_Div" [] [] "" t3; +write_rocq_term "TestArith_Div" [] [] "test_arithmetic_3.v" t3; let t4 = {{ (10 : [8]) % 3 }}; -write_rocq_term "TestArith_Mod" [] [] "" t4; +write_rocq_term "TestArith_Mod" [] [] "test_arithmetic_4.v" t4; let t5 = {{ ((0xFF : [8]) && 0x0F) || 0xE0 }}; -write_rocq_term "TestArith_AndOr" [] [] "" t5; +write_rocq_term "TestArith_AndOr" [] [] "test_arithmetic_5.v" t5; let t6 = {{ (0xFF : [8]) ^ 0xAA }}; -write_rocq_term "TestArith_Xor" [] [] "" t6; +write_rocq_term "TestArith_Xor" [] [] "test_arithmetic_6.v" t6; let t7 = {{ ~(0xAA : [8]) }}; -write_rocq_term "TestArith_Complement" [] [] "" t7; +write_rocq_term "TestArith_Complement" [] [] "test_arithmetic_7.v" t7; let t8 = {{ -(5 : [8]) }}; -write_rocq_term "TestArith_Negate" [] [] "" t8; +write_rocq_term "TestArith_Negate" [] [] "test_arithmetic_8.v" t8; let t9 = {{ (8 : [8]) << 2 }}; -write_rocq_term "TestArith_ShiftLeft" [] [] "" t9; +write_rocq_term "TestArith_ShiftLeft" [] [] "test_arithmetic_9.v" t9; let t10 = {{ (8 : [8]) >> 2 }}; -write_rocq_term "TestArith_ShiftRight" [] [] "" t10; +write_rocq_term "TestArith_ShiftRight" [] [] "test_arithmetic_10.v" t10; let t11 = {{ sext`{16} (5 : [8]) }}; -write_rocq_term "TestArith_SignExtend" [] [] "" t11; +write_rocq_term "TestArith_SignExtend" [] [] "test_arithmetic_11.v" t11; let t12 = {{ zext`{16} (5 : [8]) }}; -write_rocq_term "TestArith_ZeroExtend" [] [] "" t12; +write_rocq_term "TestArith_ZeroExtend" [] [] "test_arithmetic_12.v" t12; diff --git a/otherTests/saw-core-rocq/test_arithmetic_1.v.good b/otherTests/saw-core-rocq/test_arithmetic_1.v.good new file mode 100644 index 0000000000..e89a1d5535 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_1.v.good @@ -0,0 +1,71 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.PRingSeqBool var__0 + in + let var__4 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2 + in + CryptolPrimitivesForSAWCore.ecPlus var__1 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2) + (CryptolPrimitivesForSAWCore.ecMul var__1 var__3 + (CryptolPrimitivesForSAWCore.ecMinus var__1 var__3 var__4 var__4) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2)). diff --git a/otherTests/saw-core-rocq/test_arithmetic_1.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_10.v.good b/otherTests/saw-core-rocq/test_arithmetic_10.v.good new file mode 100644 index 0000000000..40144df46a --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_10.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_ShiftRight: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecShiftR var__0 SAWCoreScaffolding.Integer + Init.Datatypes.bool CryptolPrimitivesForSAWCore.PIntegralInteger + CryptolPrimitivesForSAWCore.PZeroBit + (CryptolPrimitivesForSAWCore.ecNumber var__0 + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger). diff --git a/otherTests/saw-core-rocq/test_arithmetic_10.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_10.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_11.v.good b/otherTests/saw-core-rocq/test_arithmetic_11.v.good new file mode 100644 index 0000000000..b3ae9f62b4 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_11.v.good @@ -0,0 +1,137 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + +Definition head + (n: CryptolPrimitivesForSAWCore.Num) + (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} + (xs: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + n) a) + : a := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecAt + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) n) a + var__1 (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) xs + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). + + + +Definition sext + (m n: CryptolPrimitivesForSAWCore.Num) + (x: CryptolPrimitivesForSAWCore.seq n Init.Datatypes.bool) + : CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + in + let var__1 + := + CryptolPrimitivesForSAWCore.tcSub m n + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.tcSub n var__0 + in + let var__4 + := + CryptolPrimitivesForSAWCore.tcAdd var__0 var__3 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool var__1) + in + let var__6 + := + CryptolPrimitivesForSAWCore.tcAdd var__1 n + in + SAWCoreScaffolding.coerce + (CryptolPrimitivesForSAWCore.seq var__6 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.seq_cong1 var__6 m Init.Datatypes.bool + ltac:(solveUnsafeAssert)) + (CryptolPrimitivesForSAWCore.ecCat var__1 n Init.Datatypes.bool (if + head var__3 Init.Datatypes.bool + (SAWCoreScaffolding.coerce + (CryptolPrimitivesForSAWCore.seq n Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.seq var__4 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.seq_cong1 n var__4 + Init.Datatypes.bool ltac:(solveUnsafeAssert)) x) then + CryptolPrimitivesForSAWCore.ecCompl var__2 + (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) var__5 + else + var__5) x). + + + +Definition TestArith_SignExtend: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + sext (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__0 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_arithmetic_11.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_11.vo.log.good new file mode 100644 index 0000000000..266ec5d418 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_11.vo.log.good @@ -0,0 +1,8278 @@ +File "./test_arithmetic_11.v", line 54, characters 0-1763: +Error: +The following term contains unresolved implicit arguments: + (fun (m n : CryptolPrimitivesForSAWCore.Num) + (x : CryptolPrimitivesForSAWCore.seq n bool) => + let var__0 := + CryptolPrimitivesForSAWCore.TCNum (BinPos.Pos.to_nat BinNums.xH) in + let var__1 := CryptolPrimitivesForSAWCore.tcSub m n in + let var__2 := CryptolPrimitivesForSAWCore.seq var__1 bool in + let var__3 := CryptolPrimitivesForSAWCore.tcSub n var__0 in + let var__4 := CryptolPrimitivesForSAWCore.tcAdd var__0 var__3 in + let var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool var__1) + in + let var__6 := CryptolPrimitivesForSAWCore.tcAdd var__1 n in + coerce (CryptolPrimitivesForSAWCore.seq var__6 bool) + (CryptolPrimitivesForSAWCore.seq m bool) + (CryptolPrimitivesForSAWCore.seq_cong1 var__6 m bool + ((match var__6 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match var__4 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _7 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _7) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 + bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _10 => + (fun (_11 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _11 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _11) + _11 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _12 => + (fun _13 : nat => + eq_ind_r + (fun n0 : nat => n0 = _13) + (eq_ind_r + (fun n0 : nat => + n0 + _11 = _13) + (Eq_TCNum + (_13 - _11 + _11) _13 + (?Goal31@{ + _6:=_13; _5:=_11; x:=x0; + _4:=_9; _3:=_7; _2:=_5; + _1:=_2} + : + _13 - _11 + _11 = _13)) + (SAWCorePreludeExtra.subNat_sub + _13 _11)) + (SAWCorePreludeExtra.addNat_add + (subNat _13 _11) _11) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _13 _11) + _11 = + _13) _12 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _10 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + ?Goal@{ + _5:=_11; x:=x0; _4:=_9; _3:=_7; + _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _11 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _11) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _8 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 + bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun (_9 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _9 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _9) + _9 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + eq_ind_r + (fun n0 : nat => n0 = _11) + (eq_ind_r + (fun n0 : nat => + n0 + _9 = _11) + (Eq_TCNum + (_11 - _9 + _9) _11 + (?Goal32@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _11 - _9 + _9 = _11)) + (SAWCorePreludeExtra.subNat_sub + _11 _9)) + (SAWCorePreludeExtra.addNat_add + (subNat _11 _9) _9) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _11 _9) + _9 = + _11) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + ?Goal0@{ + _4:=_9; x:=x0; _3:=_7; _2:=_5; + _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 + bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun (_9 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _9 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _9) + _9 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + eq_ind_r + (fun n0 : nat => n0 = _11) + (eq_ind_r + (fun n0 : nat => + n0 + _9 = _11) + (Eq_TCNum + (_11 - _9 + _9) _11 + (?Goal33@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _11 - _9 + _9 = _11)) + (SAWCorePreludeExtra.subNat_sub + _11 _9)) + (SAWCorePreludeExtra.addNat_add + (subNat _11 _9) _9) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _11 _9) + _9 = + _11) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + ?Goal1@{ + _4:=_9; x:=x0; _3:=_7; _2:=_5; + _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal34@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal2@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _5 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _5) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 + bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun (_9 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _9 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _9) + _9 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + eq_ind_r + (fun n0 : nat => n0 = _11) + (eq_ind_r + (fun n0 : nat => + n0 + _9 = _11) + (Eq_TCNum + (_11 - _9 + _9) _11 + (?Goal35@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _11 - _9 + _9 = _11)) + (SAWCorePreludeExtra.subNat_sub + _11 _9)) + (SAWCorePreludeExtra.addNat_add + (subNat _11 _9) _9) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _11 _9) + _9 = + _11) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + ?Goal3@{ + _4:=_9; x:=x0; _3:=_7; _2:=_5; + _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal36@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal4@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal37@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal5@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal38@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal6@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _5 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _5) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 + bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun (_9 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _9 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _9) + _9 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + eq_ind_r + (fun n0 : nat => n0 = _11) + (eq_ind_r + (fun n0 : nat => + n0 + _9 = _11) + (Eq_TCNum + (_11 - _9 + _9) _11 + (?Goal39@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _11 - _9 + _9 = _11)) + (SAWCorePreludeExtra.subNat_sub + _11 _9)) + (SAWCorePreludeExtra.addNat_add + (subNat _11 _9) _9) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _11 _9) + _9 = + _11) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + ?Goal7@{ + _4:=_9; x:=x0; _3:=_7; _2:=_5; + _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal40@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal8@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal41@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal9@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal42@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal10@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal43@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal11@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal44@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal12@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal45@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal13@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _0) + _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r + (fun n0 : nat => n0 = _5) + (eq_ind_r + (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum + (_5 - _0 + _0) _5 + (?Goal46@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub + _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 _0) + _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal14@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match var__4 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _5 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _5) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 + bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun (_9 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _9 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _9) + _9 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + eq_ind_r + (fun n0 : nat => n0 = _11) + (eq_ind_r + (fun n0 : nat => + n0 + _9 = _11) + (Eq_TCNum + (_11 - _9 + _9) _11 + (?Goal47@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _11 - _9 + _9 = _11)) + (SAWCorePreludeExtra.subNat_sub + _11 _9)) + (SAWCorePreludeExtra.addNat_add + (subNat _11 _9) _9) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _11 _9) + _9 = + _11) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + ?Goal15@{ + _4:=_9; x:=x0; _3:=_7; _2:=_5; + _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal48@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal16@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal49@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal17@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal50@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal18@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal51@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal19@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal52@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal20@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal53@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal21@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _0) + _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r + (fun n0 : nat => n0 = _5) + (eq_ind_r + (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum + (_5 - _0 + _0) _5 + (?Goal54@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub + _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 _0) + _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal22@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun (_7 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _7 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _7) + _7 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _8 => + (fun _9 : nat => + eq_ind_r + (fun n0 : nat => n0 = _9) + (eq_ind_r + (fun n0 : nat => n0 + _7 = _9) + (Eq_TCNum + (_9 - _7 + _7) _9 + (?Goal55@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _9 - _7 + _7 = _9)) + (SAWCorePreludeExtra.subNat_sub + _9 _7)) + (SAWCorePreludeExtra.addNat_add + (subNat _9 _7) _7) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _9 _7) + _7 = + _9) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + ?Goal23@{ + _3:=_7; x:=x0; _2:=_5; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal56@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal24@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal57@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal25@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _0) + _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r + (fun n0 : nat => n0 = _5) + (eq_ind_r + (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum + (_5 - _0 + _0) _5 + (?Goal58@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub + _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 _0) + _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal26@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool n0) + in + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n) n = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _2 bool in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m + n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _5) + _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r + (fun n0 : nat => n0 = _7) + (eq_ind_r + (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum + (_7 - _5 + _5) _7 + (?Goal59@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub + _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _7 _5) + _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal27@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _0) + _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r + (fun n0 : nat => n0 = _5) + (eq_ind_r + (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum + (_5 - _0 + _0) _5 + (?Goal60@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub + _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 _0) + _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal28@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq + _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _0) + _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r + (fun n0 : nat => n0 = _5) + (eq_ind_r + (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum + (_5 - _0 + _0) _5 + (?Goal61@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub + _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _5 _0) + _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal29@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) + n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun (_2 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq _2 + bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 _2) + _2 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + eq_ind_r (fun n0 : nat => n0 = _0) + (eq_ind_r + (fun n0 : nat => n0 + _2 = _0) + (Eq_TCNum + (_0 - _2 + _2) _0 + (?Goal62@{_1:=_2; x:=x0} + : + _0 - _2 + _2 = _0)) + (SAWCorePreludeExtra.subNat_sub + _0 _2)) + (SAWCorePreludeExtra.addNat_add + (subNat _0 _2) _2) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _0 _2) + _2 = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + ?Goal30@{_1:=_2; x:=x0} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub + _2 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _2) _1 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end + end + end + : + CryptolPrimitivesForSAWCore.tcAdd var__1 n = m) + : + var__6 = m)) + (CryptolPrimitivesForSAWCore.ecCat var__1 n bool + (if + head var__3 bool + (coerce (CryptolPrimitivesForSAWCore.seq n bool) + (CryptolPrimitivesForSAWCore.seq var__4 bool) + (CryptolPrimitivesForSAWCore.seq_cong1 n var__4 bool + (((match var__6 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match var__4 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n + (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _7 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _7) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun + (_11 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _11 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _12 => + (fun _13 : nat => + Eq_TCNum _11 + (S + match _11 with + | 0 => 0 + | S m' => m' + end) + (?Goal63@{ + _6:=_13; _5:=_11; x:=x0; + _4:=_9; _3:=_7; _2:=_5; + _1:=_2} + : + _11 = S ...) + : + _11 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _11 + (BinPos.Pos.to_nat ...))) + _12 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _11 + (S + match _11 with + | 0 => 0 + | S m' => m' + end) + (?Goal64@{ + _5:=_11; x:=x0; _4:=_9; + _3:=_7; _2:=_5; _1:=_2} + : + _11 = + S + match _11 with + | 0 => 0 + | S m' => m' + end) + : + _11 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _11 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _10 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _ : nat => eq_refl) _10 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _8 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun + (_9 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _9 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal65@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH))) _10 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal66@{ + _4:=_9; x:=x0; _3:=_7; + _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _ : nat => eq_refl) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun + (_9 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _9 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal67@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH))) _10 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal68@{ + _4:=_9; x:=x0; _3:=_7; + _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _ : nat => eq_refl) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal69@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal70@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _5 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _5) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun + (_9 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _9 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal71@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH))) _10 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal72@{ + _4:=_9; x:=x0; _3:=_7; + _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _ : nat => eq_refl) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal73@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal74@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal75@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal76@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal77@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal78@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _5 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _5) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun + (_9 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _9 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal79@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH))) _10 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal80@{ + _4:=_9; x:=x0; _3:=_7; + _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _ : nat => eq_refl) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal81@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal82@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal83@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal84@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal85@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal86@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub n + (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _0) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal87@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal88@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal89@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal90@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal91@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal92@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun + (_0 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _0 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _5 : nat => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal93@{ + _2:=_5; x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH))) _4 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal94@{x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun _ : nat => eq_refl) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match var__4 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _5 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _5) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun + (_9 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _9 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _10 => + (fun _11 : nat => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal95@{ + _5:=_11; _4:=_9; x:=x0; + _3:=_7; _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH))) _10 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _9 + (S + match _9 with + | 0 => 0 + | S m' => m' + end) + (?Goal96@{ + _4:=_9; x:=x0; _3:=_7; + _2:=_5; _1:=_2} + : + _9 = + S + match _9 with + | 0 => 0 + | S m' => m' + end) + : + _9 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _9 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _8 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _ : nat => eq_refl) _8 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _6 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal97@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal98@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal99@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal100@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal101@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal102@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub n + (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _0) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal103@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal104@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal105@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal106@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal107@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal108@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun + (_0 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _0 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _5 : nat => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal109@{ + _2:=_5; x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH))) _4 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal110@{x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun _ : nat => eq_refl) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match var__3 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub n + (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _0) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun + (_7 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _7 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _8 => + (fun _9 : nat => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal111@{ + _4:=_9; _3:=_7; x:=x0; + _2:=_5; _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH))) _8 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _7 + (S + match _7 with + | 0 => 0 + | S m' => m' + end) + (?Goal112@{ + _3:=_7; x:=x0; _2:=_5; + _1:=_2} + : + _7 = + S + match _7 with + | 0 => 0 + | S m' => m' + end) + : + _7 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _7 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _6 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _ : nat => eq_refl) _6 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _4 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal113@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal114@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal115@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal116@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun + (_0 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _0 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _5 : nat => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal117@{ + _2:=_5; x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH))) _4 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal118@{x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun _ : nat => eq_refl) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match + var__1 as n0 + return + (let var__7 := + CryptolPrimitivesForSAWCore.seq n0 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + n0) + in + n = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub n + (BinPos.Pos.to_nat BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + let var__7 := + CryptolPrimitivesForSAWCore.seq _2 + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + _2) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun + (_5 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _5 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _6 => + (fun _7 : nat => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal119@{ + _3:=_7; _2:=_5; x:=x0; + _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH))) _6 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _5 + (S + match _5 with + | 0 => 0 + | S m' => m' + end) + (?Goal120@{ + _2:=_5; x:=x0; _1:=_2} + : + _5 = + S + match _5 with + | 0 => 0 + | S m' => m' + end) + : + _5 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _5 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _ : nat => eq_refl) _4 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun + (_0 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _0 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _5 : nat => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal121@{ + _2:=_5; x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH))) _4 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal122@{x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun _ : nat => eq_refl) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + let var__7 := + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool + in + let var__8 := + CryptolPrimitivesForSAWCore.ecZero + var__7 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + in + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun + (_0 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _0 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _4 => + (fun _5 : nat => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal123@{ + _2:=_5; x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH))) _4 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _0 + (S + match _0 with + | 0 => 0 + | S m' => m' + end) + (?Goal124@{x:=x0; _1:=_2} + : + _0 = + S + match _0 with + | 0 => 0 + | S m' => m' + end) + : + _0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _0 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun _ : nat => eq_refl) _3 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq + n0 bool -> + n0 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + n0 + (BinPos.Pos.to_nat + BinNums.xH))) + with + | CryptolPrimitivesForSAWCore.TCNum + _1 => + (fun + (_2 : nat) + (x0 : + CryptolPrimitivesForSAWCore.seq + _2 bool) => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _3 => + (fun _0 : nat => + Eq_TCNum _2 + (S + match _2 with + | 0 => 0 + | S m' => m' + end) + (?Goal125@{_1:=_2; x:=x0} + : + _2 = + S + match _2 with + | 0 => 0 + | S m' => m' + end) + : + _2 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _2 + (BinPos.Pos.to_nat + BinNums.xH))) _3 + | CryptolPrimitivesForSAWCore.TCInf => + Eq_TCNum _2 + (S + match _2 with + | 0 => 0 + | S m' => m' + end) + (?Goal126@{_1:=_2; x:=x0} + : + _2 = + S + match _2 with + | 0 => 0 + | S m' => m' + end) + : + _2 = + CryptolPrimitivesForSAWCore.tcAdd + (BinPos.Pos.to_nat + BinNums.xH) + (CryptolPrimitivesForSAWCore.tcSub + _2 + (BinPos.Pos.to_nat + BinNums.xH)) + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + fun + _ : + CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf + bool => + match m with + | CryptolPrimitivesForSAWCore.TCNum + _1 => + (fun _ : nat => eq_refl) _1 + | CryptolPrimitivesForSAWCore.TCInf => + eq_refl + end + end x + end + end + end + end + end + : + n = + CryptolPrimitivesForSAWCore.tcAdd var__0 + (CryptolPrimitivesForSAWCore.tcSub n var__0)) + : + n = CryptolPrimitivesForSAWCore.tcAdd var__0 var__3) + : + n = var__4)) + x) + then + CryptolPrimitivesForSAWCore.ecCompl var__2 + (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) var__5 + else var__5) + x)) +More precisely: +- ?Goal: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _5" in + environment: + _5 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _4, _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal0: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _4" in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal1: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _4" in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _3 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal2: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal3: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _4" in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal4: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal5: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal6: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal7: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _4" in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal8: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal9: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal10: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal11: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal12: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal13: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal14: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal15: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _4" in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal16: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal17: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal18: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal19: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal20: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal21: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal22: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal23: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _3" in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal24: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal25: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal26: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal27: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0, _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal28: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal29: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _1 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal30: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _1" in + environment: + _1 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal31: Cannot infer an existential variable of type + "_6 - _5 + _5 = _6" in + environment: + _6, _5 : nat + x : CryptolPrimitivesForSAWCore.seq _5 bool + _4, _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal32: Cannot infer an existential variable of type + "_5 - _4 + _4 = _5" in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal33: Cannot infer an existential variable of type + "_5 - _4 + _4 = _5" in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal34: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal35: Cannot infer an existential variable of type + "_5 - _4 + _4 = _5" in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal36: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal37: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal38: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal39: Cannot infer an existential variable of type + "_5 - _4 + _4 = _5" in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal40: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal41: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal42: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal43: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal44: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal45: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal46: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal47: Cannot infer an existential variable of type + "_5 - _4 + _4 = _5" in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal48: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal49: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal50: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal51: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal52: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal53: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal54: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal55: Cannot infer an existential variable of type + "_4 - _3 + _3 = _4" in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal56: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal57: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal58: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal59: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0, _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal60: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal61: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal62: Cannot infer an existential variable of type + "_0 - _1 + _1 = _0" in + environment: + _0, _1 : nat + x : CryptolPrimitivesForSAWCore.seq _1 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal63: Cannot infer an existential variable of type + "_5 = S match _5 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _6, _5 : nat + x : CryptolPrimitivesForSAWCore.seq _5 bool + _4, _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal64: Cannot infer an existential variable of type + "_5 = S match _5 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _5 : nat + x : CryptolPrimitivesForSAWCore.seq _5 bool + _4, _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal65: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal66: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _3 bool : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _3) + : var__2 + _1 : nat +- ?Goal67: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal68: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal69: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal70: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _2, _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal71: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal72: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal73: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal74: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal75: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal76: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal77: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal78: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal79: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal80: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal81: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal82: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 + _1 : nat +- ?Goal83: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal84: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal85: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal86: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal87: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal88: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal89: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal90: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 + _1 : nat +- ?Goal91: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal92: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal93: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal94: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + _1 : nat +- ?Goal95: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _5, _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal96: Cannot infer an existential variable of type + "_4 = S match _4 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4 : nat + x : CryptolPrimitivesForSAWCore.seq _4 bool + _3, _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal97: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal98: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _2 bool : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _2) + : var__2 +- ?Goal99: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal100: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal101: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal102: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _0, _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal103: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal104: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal105: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal106: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal107: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal108: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal109: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal110: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal111: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _4, _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal112: Cannot infer an existential variable of type + "_3 = S match _3 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3 : nat + x : CryptolPrimitivesForSAWCore.seq _3 bool + _2, _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal113: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal114: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _0 bool : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _0) + : var__2 +- ?Goal115: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal116: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal117: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal118: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + _1 : nat + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal119: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0, _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal120: Cannot infer an existential variable of type + "_2 = S match _2 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0, _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal121: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal122: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat + var__2 := CryptolPrimitivesForSAWCore.seq _1 bool : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool _1) + : var__2 +- ?Goal123: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal124: Cannot infer an existential variable of type + "_0 = S match _0 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal125: Cannot infer an existential variable of type + "_1 = S match _1 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _0, _1 : nat + x : CryptolPrimitivesForSAWCore.seq _1 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 +- ?Goal126: Cannot infer an existential variable of type + "_1 = S match _1 with + | 0 => 0 + | S m' => m' + end" + in + environment: + _1 : nat + x : CryptolPrimitivesForSAWCore.seq _1 bool + var__2 := + CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + : Type + var__5 := + CryptolPrimitivesForSAWCore.ecZero var__2 + (CryptolPrimitivesForSAWCore.PZeroSeqBool + CryptolPrimitivesForSAWCore.TCInf) + : var__2 + +FAILED diff --git a/otherTests/saw-core-rocq/test_arithmetic_12.v.good b/otherTests/saw-core-rocq/test_arithmetic_12.v.good new file mode 100644 index 0000000000..a59c000e38 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_12.v.good @@ -0,0 +1,75 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + +Definition zext + (m n: CryptolPrimitivesForSAWCore.Num) + (x: CryptolPrimitivesForSAWCore.seq n Init.Datatypes.bool) + : CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.tcSub m n + in + let var__1 + := + CryptolPrimitivesForSAWCore.tcAdd var__0 n + in + SAWCoreScaffolding.coerce + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.seq m Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.seq_cong1 var__1 m Init.Datatypes.bool + ltac:(solveUnsafeAssert)) + (CryptolPrimitivesForSAWCore.ecCat var__0 n Init.Datatypes.bool + (CryptolPrimitivesForSAWCore.ecZero + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PZeroSeqBool var__0)) x). + + + +Definition TestArith_ZeroExtend: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + zext (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__0 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_arithmetic_12.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_12.vo.log.good new file mode 100644 index 0000000000..6f90c9c04a --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_12.vo.log.good @@ -0,0 +1,323 @@ +File "./test_arithmetic_12.v", line 21, characters 0-874: +Error: +The following term contains unresolved implicit arguments: + (fun (m n : CryptolPrimitivesForSAWCore.Num) + (x : CryptolPrimitivesForSAWCore.seq n bool) => + let var__0 := CryptolPrimitivesForSAWCore.tcSub m n in + let var__1 := CryptolPrimitivesForSAWCore.tcAdd var__0 n in + coerce (CryptolPrimitivesForSAWCore.seq var__1 bool) + (CryptolPrimitivesForSAWCore.seq m bool) + (CryptolPrimitivesForSAWCore.seq_cong1 var__1 m bool + ((match var__1 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun (_5 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq _5 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 _5) _5 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _6 => + (fun _7 : nat => + eq_ind_r (fun n0 : nat => n0 = _7) + (eq_ind_r (fun n0 : nat => n0 + _5 = _7) + (Eq_TCNum (_7 - _5 + _5) _7 + (?Goal3@{_3:=_7; _2:=_5; x:=x0; _1:=_2} + : + _7 - _5 + _5 = _7)) + (SAWCorePreludeExtra.subNat_sub _7 _5)) + (SAWCorePreludeExtra.addNat_add + (subNat _7 _5) _5) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _7 _5) _5 = + _7) _6 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end) _4 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + ?Goal@{_2:=_5; x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _5 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end + end x) _3 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 _0) _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r (fun n0 : nat => n0 = _5) + (eq_ind_r (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum (_5 - _0 + _0) _5 + (?Goal4@{_2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _5 _0) _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal0@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end + end x + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match var__0 with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun (_0 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq _0 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 _0) _0 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _4 => + (fun _5 : nat => + eq_ind_r (fun n0 : nat => n0 = _5) + (eq_ind_r (fun n0 : nat => n0 + _0 = _5) + (Eq_TCNum (_5 - _0 + _0) _5 + (?Goal5@{_2:=_5; x:=x0; _1:=_2} + : + _5 - _0 + _0 = _5)) + (SAWCorePreludeExtra.subNat_sub _5 _0)) + (SAWCorePreludeExtra.addNat_add + (subNat _5 _0) _0) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _5 _0) _0 = + _5) _4 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end) _3 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + ?Goal1@{x:=x0; _1:=_2} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end + end x) _1 + | CryptolPrimitivesForSAWCore.TCInf => + match + n as n0 + return + (CryptolPrimitivesForSAWCore.seq n0 bool -> + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub m n0) n0 = + m) + with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun (_2 : nat) + (x0 : CryptolPrimitivesForSAWCore.seq _2 bool) => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 _2) _2 = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _3 => + (fun _0 : nat => + eq_ind_r (fun n0 : nat => n0 = _0) + (eq_ind_r (fun n0 : nat => n0 + _2 = _0) + (Eq_TCNum (_0 - _2 + _2) _0 + (?Goal6@{_1:=_2; x:=x0} + : + _0 - _2 + _2 = _0)) + (SAWCorePreludeExtra.subNat_sub _0 _2)) + (SAWCorePreludeExtra.addNat_add + (subNat _0 _2) _2) + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _0 _2) _2 = + _0) _3 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end) _1 + | CryptolPrimitivesForSAWCore.TCInf => + fun + x0 : CryptolPrimitivesForSAWCore.seq + CryptolPrimitivesForSAWCore.TCInf bool => + match + m as n0 + return + (CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub n0 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + n0) + with + | CryptolPrimitivesForSAWCore.TCNum _1 => + (fun _2 : nat => + ?Goal2@{_1:=_2; x:=x0} + : + CryptolPrimitivesForSAWCore.tcAdd + (CryptolPrimitivesForSAWCore.tcSub _2 + CryptolPrimitivesForSAWCore.TCInf) + CryptolPrimitivesForSAWCore.TCInf = + _2) _1 + | CryptolPrimitivesForSAWCore.TCInf => eq_refl + end + end x + end + end + : + CryptolPrimitivesForSAWCore.tcAdd var__0 n = m) + : + var__1 = m)) + (CryptolPrimitivesForSAWCore.ecCat var__0 n bool + (CryptolPrimitivesForSAWCore.ecZero + (CryptolPrimitivesForSAWCore.seq var__0 bool) + (CryptolPrimitivesForSAWCore.PZeroSeqBool var__0)) + x)) +More precisely: +- ?Goal: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _2" in + environment: + _2 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _0, _1 : nat +- ?Goal0: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _1 : nat +- ?Goal1: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _0" in + environment: + _0 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool + _1 : nat +- ?Goal2: Cannot infer an existential variable of type + "CryptolPrimitivesForSAWCore.TCInf = _1" in + environment: + _1 : nat + x : CryptolPrimitivesForSAWCore.seq CryptolPrimitivesForSAWCore.TCInf bool +- ?Goal3: Cannot infer an existential variable of type + "_3 - _2 + _2 = _3" in + environment: + _3, _2 : nat + x : CryptolPrimitivesForSAWCore.seq _2 bool + _0, _1 : nat +- ?Goal4: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat +- ?Goal5: Cannot infer an existential variable of type + "_2 - _0 + _0 = _2" in + environment: + _2, _0 : nat + x : CryptolPrimitivesForSAWCore.seq _0 bool + _1 : nat +- ?Goal6: Cannot infer an existential variable of type + "_0 - _1 + _1 = _0" in + environment: + _0, _1 : nat + x : CryptolPrimitivesForSAWCore.seq _1 bool + +FAILED diff --git a/otherTests/saw-core-rocq/test_arithmetic_2.v.good b/otherTests/saw-core-rocq/test_arithmetic_2.v.good new file mode 100644 index 0000000000..b89ecabd38 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_2.v.good @@ -0,0 +1,57 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_DivZero: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + CryptolPrimitivesForSAWCore.ecDiv var__1 + (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 + var__2). diff --git a/otherTests/saw-core-rocq/test_arithmetic_2.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_3.v.good b/otherTests/saw-core-rocq/test_arithmetic_3.v.good new file mode 100644 index 0000000000..0b186402d4 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_3.v.good @@ -0,0 +1,60 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_Div: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + CryptolPrimitivesForSAWCore.ecDiv var__1 + (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2). diff --git a/otherTests/saw-core-rocq/test_arithmetic_3.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_4.v.good b/otherTests/saw-core-rocq/test_arithmetic_4.v.good new file mode 100644 index 0000000000..757a549a72 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_4.v.good @@ -0,0 +1,60 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_Mod: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + CryptolPrimitivesForSAWCore.ecMod var__1 + (CryptolPrimitivesForSAWCore.PIntegralSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2). diff --git a/otherTests/saw-core-rocq/test_arithmetic_4.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_5.v.good b/otherTests/saw-core-rocq/test_arithmetic_5.v.good new file mode 100644 index 0000000000..410da3a80d --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_5.v.good @@ -0,0 +1,81 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_AndOr: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLogicSeqBool var__0 + in + CryptolPrimitivesForSAWCore.ecOr var__1 var__3 + (CryptolPrimitivesForSAWCore.ecAnd var__1 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + var__1 var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2)) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + var__1 var__2). diff --git a/otherTests/saw-core-rocq/test_arithmetic_5.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_6.v.good b/otherTests/saw-core-rocq/test_arithmetic_6.v.good new file mode 100644 index 0000000000..7cd8d108df --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_6.v.good @@ -0,0 +1,70 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_Xor: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + CryptolPrimitivesForSAWCore.ecXor var__1 + (CryptolPrimitivesForSAWCore.PLogicSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + var__1 var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) + var__1 var__2). diff --git a/otherTests/saw-core-rocq/test_arithmetic_6.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_7.v.good b/otherTests/saw-core-rocq/test_arithmetic_7.v.good new file mode 100644 index 0000000000..21c2f0c63b --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_7.v.good @@ -0,0 +1,55 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_Complement: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecCompl var__1 + (CryptolPrimitivesForSAWCore.PLogicSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) + var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_arithmetic_7.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_8.v.good b/otherTests/saw-core-rocq/test_arithmetic_8.v.good new file mode 100644 index 0000000000..93f13e2c81 --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_8.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_Negate: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecNeg var__1 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_arithmetic_8.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_8.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_arithmetic_9.v.good b/otherTests/saw-core-rocq/test_arithmetic_9.v.good new file mode 100644 index 0000000000..86d042fabe --- /dev/null +++ b/otherTests/saw-core-rocq/test_arithmetic_9.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestArith_ShiftLeft: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecShiftL var__0 SAWCoreScaffolding.Integer + Init.Datatypes.bool CryptolPrimitivesForSAWCore.PIntegralInteger + CryptolPrimitivesForSAWCore.PZeroBit + (CryptolPrimitivesForSAWCore.ecNumber var__0 + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger). diff --git a/otherTests/saw-core-rocq/test_arithmetic_9.vo.log.good b/otherTests/saw-core-rocq/test_arithmetic_9.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean.log.good b/otherTests/saw-core-rocq/test_boolean.log.good index dd86a7d891..d47b3c3b64 100644 --- a/otherTests/saw-core-rocq/test_boolean.log.good +++ b/otherTests/saw-core-rocq/test_boolean.log.good @@ -1,265 +1 @@ Loading file "test_boolean.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestBool : Init.Datatypes.bool := - CryptolPrimitivesForSAWCore.ecEq Init.Datatypes.bool CryptolPrimitivesForSAWCore.PEqBit (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true Init.Datatypes.false) (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true)) Init.Datatypes.true. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestBool_NestedOps : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.ecEq Init.Datatypes.bool CryptolPrimitivesForSAWCore.PEqBit (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true Init.Datatypes.false) (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true)) Init.Datatypes.true in - CryptolPrimitivesForSAWCore.ecNotEq Init.Datatypes.bool CryptolPrimitivesForSAWCore.PEqBit (CryptolPrimitivesForSAWCore.ecXor Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit var__0 var__0) (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit var__0))) var__0) Init.Datatypes.true. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestBool_Comparison : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber var__3 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger in - let var__6 := CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger in - CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecLt var__1 (CryptolPrimitivesForSAWCore.PCmpSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber var__4 var__1 var__2)) (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecGt SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PCmpInteger var__5 var__6) (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecLtEq SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PCmpInteger var__6 var__5) (CryptolPrimitivesForSAWCore.ecGtEq SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PCmpInteger var__5 var__6))). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestBool_Ite1 (u1333 : Type) {Inh_u1333 : SAWCoreScaffolding.Inhabited u1333} (_P : CryptolPrimitivesForSAWCore.PLiteral u1333) : u1333 := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - if CryptolPrimitivesForSAWCore.ecLt var__1 (CryptolPrimitivesForSAWCore.PCmpSeqBool var__0) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2) then CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) u1333 _P else CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) u1333 _P. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestBool_Ite2 : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - if Init.Datatypes.true then if Init.Datatypes.false then CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2 else CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2 else CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestPartialIte_1arg : forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - SAWCoreScaffolding.ite Init.Datatypes.bool. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestPartialIte_2args : forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool := - SAWCoreScaffolding.ite Init.Datatypes.bool Init.Datatypes.true. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestPartialIte_3args : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool := - SAWCoreScaffolding.ite Init.Datatypes.bool Init.Datatypes.true Init.Datatypes.false. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestPartialIte_4args : Init.Datatypes.bool := - if Init.Datatypes.true then Init.Datatypes.false else Init.Datatypes.true. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestPartialIte_5args : Init.Datatypes.bool := - (if Init.Datatypes.true then Init.Datatypes.negb else SAWCoreScaffolding.id Init.Datatypes.bool) Init.Datatypes.false. - diff --git a/otherTests/saw-core-rocq/test_boolean.saw b/otherTests/saw-core-rocq/test_boolean.saw index 2682ac7272..8ee912ef69 100644 --- a/otherTests/saw-core-rocq/test_boolean.saw +++ b/otherTests/saw-core-rocq/test_boolean.saw @@ -1,30 +1,30 @@ // Test: Boolean, comparison operators. let t1 = {{ True && False || ~True == True}}; -write_rocq_term "TestBool" [] [] "" t1; +write_rocq_term "TestBool" [] [] "test_boolean_1.v" t1; let t2 = {{ (((t1 && t1) || ~(~t1)) ^ t1) != True}}; -write_rocq_term "TestBool_NestedOps" [] [] "" t2; +write_rocq_term "TestBool_NestedOps" [] [] "test_boolean_2.v" t2; let t3 = {{ ((10 : [8]) < 5) && (10 > 5) && (5 <= 10) && (10 >= 5) }}; -write_rocq_term "TestBool_Comparison" [] [] "" t3; +write_rocq_term "TestBool_Comparison" [] [] "test_boolean_3.v" t3; let t4 = {{ if (5 : [8]) < 10 then 1 else 2 }}; -write_rocq_term "TestBool_Ite1" [] [] "" t4; +write_rocq_term "TestBool_Ite1" [] [] "test_boolean_4.v" t4; let t5 = {{ if True then (if False then (1 : [8]) else 2) else 3 }}; -write_rocq_term "TestBool_Ite2" [] [] "" t5; +write_rocq_term "TestBool_Ite2" [] [] "test_boolean_5.v" t5; let t6 = parse_core "ite Bool"; -write_rocq_term "TestPartialIte_1arg" [] [] "" t6; +write_rocq_term "TestPartialIte_1arg" [] [] "test_boolean_6.v" t6; let t7 = parse_core "ite Bool True"; -write_rocq_term "TestPartialIte_2args" [] [] "" t7; +write_rocq_term "TestPartialIte_2args" [] [] "test_boolean_7.v" t7; let t8 = parse_core "ite Bool True False"; -write_rocq_term "TestPartialIte_3args" [] [] "" t8; +write_rocq_term "TestPartialIte_3args" [] [] "test_boolean_8.v" t8; let t9 = parse_core "ite Bool True False True"; -write_rocq_term "TestPartialIte_4args" [] [] "" t9; +write_rocq_term "TestPartialIte_4args" [] [] "test_boolean_9.v" t9; let t10 = parse_core "ite (Bool -> Bool) True not (id Bool) False"; -write_rocq_term "TestPartialIte_5args" [] [] "" t10; +write_rocq_term "TestPartialIte_5args" [] [] "test_boolean_10.v" t10; diff --git a/otherTests/saw-core-rocq/test_boolean_1.v.good b/otherTests/saw-core-rocq/test_boolean_1.v.good new file mode 100644 index 0000000000..3948ea5cb2 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_1.v.good @@ -0,0 +1,33 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestBool: Init.Datatypes.bool := + CryptolPrimitivesForSAWCore.ecEq Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PEqBit + (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true + Init.Datatypes.false) + (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true)) + Init.Datatypes.true. diff --git a/otherTests/saw-core-rocq/test_boolean_1.vo.log.good b/otherTests/saw-core-rocq/test_boolean_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_10.v.good b/otherTests/saw-core-rocq/test_boolean_10.v.good new file mode 100644 index 0000000000..26e18ba083 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_10.v.good @@ -0,0 +1,27 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestPartialIte_5args: Init.Datatypes.bool := + (if Init.Datatypes.true then + Init.Datatypes.negb + else + SAWCoreScaffolding.id Init.Datatypes.bool) Init.Datatypes.false. diff --git a/otherTests/saw-core-rocq/test_boolean_10.vo.log.good b/otherTests/saw-core-rocq/test_boolean_10.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_2.v.good b/otherTests/saw-core-rocq/test_boolean_2.v.good new file mode 100644 index 0000000000..0d53d019c6 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_2.v.good @@ -0,0 +1,49 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestBool_NestedOps: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.ecEq Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PEqBit + (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true + Init.Datatypes.false) + (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit Init.Datatypes.true)) + Init.Datatypes.true + in + CryptolPrimitivesForSAWCore.ecNotEq Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PEqBit + (CryptolPrimitivesForSAWCore.ecXor Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit var__0 var__0) + (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit var__0))) var__0) + Init.Datatypes.true. diff --git a/otherTests/saw-core-rocq/test_boolean_2.vo.log.good b/otherTests/saw-core-rocq/test_boolean_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_3.v.good b/otherTests/saw-core-rocq/test_boolean_3.v.good new file mode 100644 index 0000000000..eae230f19c --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_3.v.good @@ -0,0 +1,80 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestBool_Comparison: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber var__3 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger + in + let var__6 + := + CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger + in + CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecLt var__1 + (CryptolPrimitivesForSAWCore.PCmpSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2) + (CryptolPrimitivesForSAWCore.ecNumber var__4 var__1 var__2)) + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecGt SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PCmpInteger var__5 var__6) + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecLtEq SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PCmpInteger var__6 var__5) + (CryptolPrimitivesForSAWCore.ecGtEq SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PCmpInteger var__5 var__6))). diff --git a/otherTests/saw-core-rocq/test_boolean_3.vo.log.good b/otherTests/saw-core-rocq/test_boolean_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_4.v.good b/otherTests/saw-core-rocq/test_boolean_4.v.good new file mode 100644 index 0000000000..37599cd6a1 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_4.v.good @@ -0,0 +1,66 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestBool_Ite1 + (u1333: Type) + {Inh_u1333: SAWCoreScaffolding.Inhabited u1333} + (_P: CryptolPrimitivesForSAWCore.PLiteral u1333) + : u1333 := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + if CryptolPrimitivesForSAWCore.ecLt var__1 + (CryptolPrimitivesForSAWCore.PCmpSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2) then + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) u1333 _P + else + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) u1333 _P. diff --git a/otherTests/saw-core-rocq/test_boolean_4.vo.log.good b/otherTests/saw-core-rocq/test_boolean_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_5.v.good b/otherTests/saw-core-rocq/test_boolean_5.v.good new file mode 100644 index 0000000000..d53811f041 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_5.v.good @@ -0,0 +1,64 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestBool_Ite2: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + if Init.Datatypes.true then + if Init.Datatypes.false then + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2 + else + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2 + else + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2. diff --git a/otherTests/saw-core-rocq/test_boolean_5.vo.log.good b/otherTests/saw-core-rocq/test_boolean_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_6.v.good b/otherTests/saw-core-rocq/test_boolean_6.v.good new file mode 100644 index 0000000000..83a01890e3 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_6.v.good @@ -0,0 +1,25 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestPartialIte_1arg: forall (_1 _2 _3: Init.Datatypes.bool), + Init.Datatypes.bool := + SAWCoreScaffolding.ite Init.Datatypes.bool. diff --git a/otherTests/saw-core-rocq/test_boolean_6.vo.log.good b/otherTests/saw-core-rocq/test_boolean_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_7.v.good b/otherTests/saw-core-rocq/test_boolean_7.v.good new file mode 100644 index 0000000000..286cb35d20 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_7.v.good @@ -0,0 +1,25 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestPartialIte_2args: forall (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool := + SAWCoreScaffolding.ite Init.Datatypes.bool Init.Datatypes.true. diff --git a/otherTests/saw-core-rocq/test_boolean_7.vo.log.good b/otherTests/saw-core-rocq/test_boolean_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_8.v.good b/otherTests/saw-core-rocq/test_boolean_8.v.good new file mode 100644 index 0000000000..a657563913 --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_8.v.good @@ -0,0 +1,26 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestPartialIte_3args: forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool := + SAWCoreScaffolding.ite Init.Datatypes.bool Init.Datatypes.true + Init.Datatypes.false. diff --git a/otherTests/saw-core-rocq/test_boolean_8.vo.log.good b/otherTests/saw-core-rocq/test_boolean_8.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_boolean_9.v.good b/otherTests/saw-core-rocq/test_boolean_9.v.good new file mode 100644 index 0000000000..b15c104eaf --- /dev/null +++ b/otherTests/saw-core-rocq/test_boolean_9.v.good @@ -0,0 +1,27 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestPartialIte_4args: Init.Datatypes.bool := + if Init.Datatypes.true then + Init.Datatypes.false + else + Init.Datatypes.true. diff --git a/otherTests/saw-core-rocq/test_boolean_9.vo.log.good b/otherTests/saw-core-rocq/test_boolean_9.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_cryptol_module_sha512.saw b/otherTests/saw-core-rocq/test_cryptol_module_sha512.saw index 0847d5f07f..9cd6403977 100644 --- a/otherTests/saw-core-rocq/test_cryptol_module_sha512.saw +++ b/otherTests/saw-core-rocq/test_cryptol_module_sha512.saw @@ -1,2 +1,2 @@ // Test: write_rocq_cryptol_module command -write_rocq_cryptol_module "../../exercises/sha512/SHA512.cry" "" [] []; +write_rocq_cryptol_module "../../exercises/sha512/SHA512.cry" "test_cryptol_module_sha512_1.v" [] []; diff --git a/otherTests/saw-core-rocq/test_cryptol_module_simple.log.good b/otherTests/saw-core-rocq/test_cryptol_module_simple.log.good index e4767f8459..f0426c52a8 100644 --- a/otherTests/saw-core-rocq/test_cryptol_module_simple.log.good +++ b/otherTests/saw-core-rocq/test_cryptol_module_simple.log.good @@ -1,57 +1 @@ Loading file "test_cryptol_module_simple.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import SAWCorePreludeExtra. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - -Section Simple . - Definition addOne (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__1 (CryptolPrimitivesForSAWCore.PRingSeqBool var__0) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - Definition addTwo (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecPlus (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PRingSeqBool var__0) x y. - - Definition isZero (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecEq var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - Definition maxVal (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - if CryptolPrimitivesForSAWCore.ecGt var__1 (CryptolPrimitivesForSAWCore.PCmpSeqBool var__0) x y then x else y. - - Definition encrypt (a : CryptolPrimitivesForSAWCore.Num) (key : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (plaintext : CryptolPrimitivesForSAWCore.seq a (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool)) : CryptolPrimitivesForSAWCore.seq a (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.seqMap var__0 var__0 a (fun (pt : var__0) => let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecXor var__0 (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) pt key) plaintext. - - Definition decrypt (a : CryptolPrimitivesForSAWCore.Num) (key : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (ciphertext : CryptolPrimitivesForSAWCore.seq a (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool)) : CryptolPrimitivesForSAWCore.seq a (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.seqMap var__0 var__0 a (fun (ct : var__0) => let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecXor var__0 (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) ct key) ciphertext. - - Definition roundtrip (u944 : CryptolPrimitivesForSAWCore.Num) (k : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (ip : CryptolPrimitivesForSAWCore.seq u944 (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool)) : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecEq (CryptolPrimitivesForSAWCore.seq u944 var__1) (CryptolPrimitivesForSAWCore.PEqSeq u944 var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0)) (decrypt u944 k (encrypt u944 k ip)) ip. - -End Simple . diff --git a/otherTests/saw-core-rocq/test_cryptol_module_simple.saw b/otherTests/saw-core-rocq/test_cryptol_module_simple.saw index e2e69d9d5b..9e4747fdc5 100644 --- a/otherTests/saw-core-rocq/test_cryptol_module_simple.saw +++ b/otherTests/saw-core-rocq/test_cryptol_module_simple.saw @@ -1,2 +1,2 @@ // Test: write_rocq_cryptol_module command -write_rocq_cryptol_module "Simple.cry" "" [] []; +write_rocq_cryptol_module "Simple.cry" "test_cryptol_module_simple_1.v" [] []; diff --git a/otherTests/saw-core-rocq/test_cryptol_module_simple_1.v.good b/otherTests/saw-core-rocq/test_cryptol_module_simple_1.v.good new file mode 100644 index 0000000000..a19c33ab42 --- /dev/null +++ b/otherTests/saw-core-rocq/test_cryptol_module_simple_1.v.good @@ -0,0 +1,279 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import SAWCorePreludeExtra. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + +Section Simple. + Definition addOne + (x: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + : CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__1 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__0) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). + + Definition addTwo + (x y: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + : CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecPlus + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PRingSeqBool var__0) x y. + + Definition isZero + (x: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + : Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecEq var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). + + Definition maxVal + (x y: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + : CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + if CryptolPrimitivesForSAWCore.ecGt var__1 + (CryptolPrimitivesForSAWCore.PCmpSeqBool var__0) x y then + x + else + y. + + Definition encrypt + (a: CryptolPrimitivesForSAWCore.Num) + (key: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (plaintext: + CryptolPrimitivesForSAWCore.seq a + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool)) + : CryptolPrimitivesForSAWCore.seq a + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.seqMap var__0 var__0 a (fun (pt: var__0) + => + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecXor var__0 + (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) pt key + ) plaintext. + + Definition decrypt + (a: CryptolPrimitivesForSAWCore.Num) + (key: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (ciphertext: + CryptolPrimitivesForSAWCore.seq a + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool)) + : CryptolPrimitivesForSAWCore.seq a + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.seqMap var__0 var__0 a (fun (ct: var__0) + => + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecXor var__0 + (CryptolPrimitivesForSAWCore.PLogicSeqBool var__1) ct key + ) ciphertext. + + Definition roundtrip + (u944: CryptolPrimitivesForSAWCore.Num) + (k: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (ip: CryptolPrimitivesForSAWCore.seq u944 + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool)) + : Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecEq + (CryptolPrimitivesForSAWCore.seq u944 var__1) + (CryptolPrimitivesForSAWCore.PEqSeq u944 var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0)) + (decrypt u944 k (encrypt u944 k ip)) ip. + +End Simple. diff --git a/otherTests/saw-core-rocq/test_cryptol_module_simple_1.vo.log.good b/otherTests/saw-core-rocq/test_cryptol_module_simple_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_cryptol_primitives.log.good b/otherTests/saw-core-rocq/test_cryptol_primitives.log.good index 0a5bc464ee..215fb32487 100644 --- a/otherTests/saw-core-rocq/test_cryptol_primitives.log.good +++ b/otherTests/saw-core-rocq/test_cryptol_primitives.log.good @@ -1,1002 +1 @@ Loading file "test_cryptol_primitives.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import SAWCorePreludeExtra. - - -(** Code generated by saw-core-rocq *) - -Module CryptolPrimitivesForSAWCore. - -Definition const : forall (a : Type), forall (b : Type), forall (_1 : a), forall (_2 : b), a := - fun (a : Type) (b : Type) (x : a) (y : b) => x. - -Definition compose : forall (a : Type), forall (b : Type), forall (c : Type), forall (_1 : forall (_1 : b), c), forall (_2 : forall (_2 : a), b), forall (_3 : a), c := - fun (a : Type) (b : Type) (c : Type) (f : forall (_1 : b), c) (g : forall (_1 : a), b) (x : a) => f (g x). - -Definition bvExp : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.foldr Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) n (fun (b : Init.Datatypes.bool) (a : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => let var__0 := SAWCoreVectorsAsRocqVectors.bvMul n a a in - if b then SAWCoreVectorsAsRocqVectors.bvMul n x var__0 else var__0) (SAWCoreVectorsAsRocqVectors.bvNat n (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (SAWCorePrelude.reverse n Init.Datatypes.bool y). - -Definition updFst : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), a), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b := - fun (a : Type) (b : Type) (f : forall (_1 : a), a) (x : SAWCoreScaffolding.PairType a b) => SAWCoreScaffolding.PairValue a b (f (SAWCorePrelude.Pair_fst a b x)) (SAWCorePrelude.Pair_snd a b x). - -Definition updSnd : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : b), b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b := - fun (a : Type) (b : Type) (f : forall (_1 : b), b) (x : SAWCoreScaffolding.PairType a b) => SAWCoreScaffolding.PairValue a b (SAWCorePrelude.Pair_fst a b x) (f (SAWCorePrelude.Pair_snd a b x)). - -Definition updHeadRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), a), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : a), a) (x : SAWCoreScaffolding.RecordTypeCons s a b) => @SAWCoreScaffolding.RecordCons s a b (f (@SAWCoreScaffolding.recordHead s a b x)) (@SAWCoreScaffolding.recordTail s a b x). - -Definition updTailRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : b), b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : b), b) (x : SAWCoreScaffolding.RecordTypeCons s a b) => @SAWCoreScaffolding.RecordCons s a b (@SAWCoreScaffolding.recordHead s a b x) (f (@SAWCoreScaffolding.recordTail s a b x)). - -Inductive Num : Type := -| TCNum : forall (_1 : Init.Datatypes.nat), Num -| TCInf : Num -. - -Definition Num__rec : forall (p : forall (_1 : Num), Type), forall (_1 : forall (n : Init.Datatypes.nat), p (TCNum n)), forall (_2 : p TCInf), forall (n : Num), p n := - fun (p : forall (_1 : Num), Type) (f1 : forall (n : Init.Datatypes.nat), p (TCNum n)) (f2 : p TCInf) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect p f1 f2 n. - -Definition tcFin : forall (_1 : Num), Init.Datatypes.bool := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => Init.Datatypes.bool) (fun (n1 : Init.Datatypes.nat) => Init.Datatypes.true) Init.Datatypes.false n. - -Definition getFinNat : forall (n : Num), Init.Datatypes.nat := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => Init.Datatypes.nat) (fun (n1 : Init.Datatypes.nat) => n1) (SAWCoreScaffolding.error Init.Datatypes.nat "Unexpected Fin constraint violation!"%string) n. - -Definition finNumRec : forall (p : forall (_1 : Num), Type), forall {Inh_p : forall (_1 : Num), SAWCoreScaffolding.Inhabited (p _1)}, forall (_1 : forall (n : Init.Datatypes.nat), p (TCNum n)), forall (n : Num), p n := - fun (p : forall (_1 : Num), Type) (Inh_p : forall (_1 : Num), SAWCoreScaffolding.Inhabited (p _1)) (f : forall (n : Init.Datatypes.nat), p (TCNum n)) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect p f (SAWCoreScaffolding.error (p TCInf) "Unexpected Fin constraint violation!"%string) n. - -Definition finNumRec2 : forall (p : forall (_1 : Num), forall (_2 : Num), Type), forall {Inh_p : forall (_1 : Num), forall (_2 : Num), SAWCoreScaffolding.Inhabited (p _1 _2)}, forall (_1 : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), p (TCNum m) (TCNum n)), forall (m : Num), forall (n : Num), p m n := - fun (p : forall (_1 : Num), forall (_2 : Num), Type) (Inh_p : forall (_1 : Num), forall (_2 : Num), SAWCoreScaffolding.Inhabited (p _1 _2)) (f : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), p (TCNum m) (TCNum n)) => finNumRec (fun (m : Num) => forall (n : Num), p m n) (fun (m : Init.Datatypes.nat) => finNumRec (p (TCNum m)) (f m)). - -Definition binaryNumFun : forall (_1 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.nat), forall (_2 : forall (_2 : Init.Datatypes.nat), Num), forall (_3 : forall (_3 : Init.Datatypes.nat), Num), forall (_4 : Num), forall (_5 : Num), forall (_6 : Num), Num := - fun (f1 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.nat) (f2 : forall (_1 : Init.Datatypes.nat), Num) (f3 : forall (_1 : Init.Datatypes.nat), Num) (f4 : Num) (num1 : Num) (num2 : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num1' : Num) => Num) (fun (n1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num2' : Num) => Num) (fun (n2 : Init.Datatypes.nat) => TCNum (f1 n1 n2)) (f2 n1) num2) (@CryptolPrimitivesForSAWCore.Num_rect (fun (num2' : Num) => Num) f3 f4 num2) num1. - -Definition ternaryNumFun : forall (_1 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), forall (_3 : Init.Datatypes.nat), Init.Datatypes.nat), forall (_2 : Num), forall (_3 : Num), forall (_4 : Num), forall (_5 : Num), Num := - fun (f1 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), forall (_3 : Init.Datatypes.nat), Init.Datatypes.nat) (f2 : Num) (num1 : Num) (num2 : Num) (num3 : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num1' : Num) => Num) (fun (n1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num2' : Num) => Num) (fun (n2 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num3' : Num) => Num) (fun (n3 : Init.Datatypes.nat) => TCNum (f1 n1 n2 n3)) f2 num3) f2 num2) f2 num1. - -Definition tcWidth : forall (_1 : Num), Num := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => Num) (fun (x : Init.Datatypes.nat) => TCNum (SAWCoreScaffolding.widthNat x)) TCInf n. - -Definition tcAdd : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun SAWCoreScaffolding.addNat (fun (x : Init.Datatypes.nat) => TCInf) (fun (y : Init.Datatypes.nat) => TCInf) TCInf. - -Definition tcSub : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun SAWCoreScaffolding.subNat (fun (x : Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) (fun (y : Init.Datatypes.nat) => TCInf) (TCNum SAWCoreScaffolding.Zero). - -Definition tcMul : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun SAWCoreScaffolding.mulNat (fun (x : Init.Datatypes.nat) => SAWCoreScaffolding.if0Nat Num x (TCNum SAWCoreScaffolding.Zero) TCInf) (fun (y : Init.Datatypes.nat) => SAWCoreScaffolding.if0Nat Num y (TCNum SAWCoreScaffolding.Zero) TCInf) TCInf. - -Definition tcDiv : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun (fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => SAWCorePrelude.divNat x y) (fun (x : Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) (fun (y : Init.Datatypes.nat) => TCInf) (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)). - -Definition tcMod : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun (fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => SAWCorePrelude.modNat x y) (fun (x : Init.Datatypes.nat) => TCNum x) (fun (y : Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) (TCNum SAWCoreScaffolding.Zero). - -Definition tcExp : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun SAWCoreScaffolding.expNat (fun (x : Init.Datatypes.nat) => SAWCorePrelude.natCase (fun (_1 : Init.Datatypes.nat) => Num) (TCNum SAWCoreScaffolding.Zero) (fun (x_minus_1 : Init.Datatypes.nat) => SAWCoreScaffolding.if0Nat Num x_minus_1 (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) TCInf) x) (fun (y : Init.Datatypes.nat) => SAWCoreScaffolding.if0Nat Num y (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) TCInf) TCInf. - -Definition tcMin : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun SAWCoreScaffolding.minNat (fun (x : Init.Datatypes.nat) => TCNum x) (fun (y : Init.Datatypes.nat) => TCNum y) TCInf. - -Definition tcMax : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun SAWCoreScaffolding.maxNat (fun (x : Init.Datatypes.nat) => TCInf) (fun (y : Init.Datatypes.nat) => TCInf) TCInf. - -Definition ceilDivNat : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.nat := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => SAWCorePrelude.divNat (SAWCoreScaffolding.addNat x (SAWCoreScaffolding.subNat y (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) y. - -Definition ceilModNat : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.nat := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => SAWCoreScaffolding.subNat (SAWCoreScaffolding.mulNat (ceilDivNat x y) y) x. - -Definition tcCeilDiv : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun ceilDivNat (fun (x : Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) (fun (y : Init.Datatypes.nat) => TCInf) TCInf. - -Definition tcCeilMod : forall (_1 : Num), forall (_2 : Num), Num := - binaryNumFun ceilModNat (fun (x : Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) (fun (y : Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) TCInf. - -Definition tcLenFromThenTo_Nat : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), forall (_3 : Init.Datatypes.nat), Init.Datatypes.nat := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) (z : Init.Datatypes.nat) => if SAWCoreScaffolding.ltNat x y then if SAWCoreScaffolding.ltNat z x then SAWCoreScaffolding.Zero else SAWCoreScaffolding.addNat (SAWCorePrelude.divNat (SAWCoreScaffolding.subNat z x) (SAWCoreScaffolding.subNat y x)) (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) else if SAWCoreScaffolding.ltNat x z then SAWCoreScaffolding.Zero else SAWCoreScaffolding.addNat (SAWCorePrelude.divNat (SAWCoreScaffolding.subNat x z) (SAWCoreScaffolding.subNat x y)) (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH). - -Definition tcLenFromThenTo : forall (_1 : Num), forall (_2 : Num), forall (_3 : Num), Num := - ternaryNumFun tcLenFromThenTo_Nat TCInf. - -Definition binaryNumPred : forall (_1 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.bool), forall (_2 : forall (_2 : Init.Datatypes.nat), Init.Datatypes.bool), forall (_3 : forall (_3 : Init.Datatypes.nat), Init.Datatypes.bool), forall (_4 : Init.Datatypes.bool), forall (_5 : Num), forall (_6 : Num), Init.Datatypes.bool := - fun (f1 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.bool) (f2 : forall (_1 : Init.Datatypes.nat), Init.Datatypes.bool) (f3 : forall (_1 : Init.Datatypes.nat), Init.Datatypes.bool) (f4 : Init.Datatypes.bool) (num1 : Num) (num2 : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num1' : Num) => Init.Datatypes.bool) (fun (n1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num2' : Num) => Init.Datatypes.bool) (fun (n2 : Init.Datatypes.nat) => f1 n1 n2) (f2 n1) num2) (@CryptolPrimitivesForSAWCore.Num_rect (fun (num2' : Num) => Init.Datatypes.bool) f3 f4 num2) num1. - -Definition tcEqual : forall (_1 : Num), forall (_2 : Num), Init.Datatypes.bool := - binaryNumPred SAWCoreScaffolding.equalNat (fun (x : Init.Datatypes.nat) => Init.Datatypes.false) (fun (y : Init.Datatypes.nat) => Init.Datatypes.false) Init.Datatypes.true. - -Definition tcLt : forall (_1 : Num), forall (_2 : Num), Init.Datatypes.bool := - binaryNumPred SAWCoreScaffolding.ltNat (fun (x : Init.Datatypes.nat) => Init.Datatypes.true) (fun (y : Init.Datatypes.nat) => Init.Datatypes.false) Init.Datatypes.true. - -Definition seq : forall (_1 : Num), forall (_2 : Type), Type := - fun (num : Num) (a : Type) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num1 : Num) => Type) (fun (n : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCorePrelude.Stream a) num. - -Definition seq_TCNum : forall (n : Init.Datatypes.nat), forall (a : Type), @Init.Logic.eq Type (seq (TCNum n) a) (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (n : Init.Datatypes.nat) (a : Type) => @Init.Logic.eq_refl Type (SAWCoreVectorsAsRocqVectors.Vec n a). - -Definition seq_TCInf : forall (a : Type), @Init.Logic.eq Type (seq TCInf a) (SAWCorePrelude.Stream a) := - fun (a : Type) => @Init.Logic.eq_refl Type (SAWCorePrelude.Stream a). - -Definition seqMap : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall (n : Num), forall (_1 : forall (_1 : a), b), forall (_2 : seq n a), seq n b := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (n : Num) (f : forall (_1 : a), b) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 a), seq n1 b) (SAWCorePrelude.map a b f) (SAWCorePrelude.streamMap a b f) n. - -Definition seqConst : forall (n : Num), forall (a : Type), forall (_1 : a), seq n a := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (_1 : a), seq n1 a) SAWCorePrelude.replicate SAWCorePrelude.streamConst n. - -Definition seqInhabited : forall (n : Num), forall (a : Type), forall (x : a), seq n a := - CryptolPrimitivesForSAWCore.Num__rec (fun (n : Num) => forall (a : Type), forall (x : a), seq n a) (fun (n : Init.Datatypes.nat) (a : Type) (x : a) => SAWCoreVectorsAsRocqVectors.gen n a (fun (i : Init.Datatypes.nat) => x)) (fun (a : Type) (x : a) => SAWCorePrelude.MkStream a (fun (i : Init.Datatypes.nat) => x)). - -#[global] Instance Inhabited_seq (n:Num) (a:Type) (Ha:Inhabited a) : Inhabited (seq n a) := MkInhabited (seq n a) (seqInhabited n a inhabitant). -Definition IntModNum : forall (num : Num), Type := - fun (num : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n : Num) => Type) SAWCoreScaffolding.IntMod SAWCoreScaffolding.Integer num. - -Definition seq_cong : forall (m : Num), forall (n : Num), forall (a : Type), forall (b : Type), forall (_1 : @Init.Logic.eq Num m n), forall (_2 : @Init.Logic.eq Type a b), @Init.Logic.eq Type (seq m a) (seq n b) := - fun (m : Num) (n : Num) (a : Type) (b : Type) (eq_mn : @Init.Logic.eq Num m n) (eq_ab : @Init.Logic.eq Type a b) => SAWCorePrelude.trans Type (seq m a) (seq n a) (seq n b) (SAWCorePrelude.eq_cong Num m n eq_mn Type (fun (x : Num) => seq x a)) (SAWCorePrelude.eq_cong Type a b eq_ab Type (fun (x : Type) => seq n x)). - -Definition seq_cong1 : forall (m : Num), forall (n : Num), forall (a : Type), forall (_1 : @Init.Logic.eq Num m n), @Init.Logic.eq Type (seq m a) (seq n a) := - fun (m : Num) (n : Num) (a : Type) (eq_mn : @Init.Logic.eq Num m n) => SAWCorePrelude.eq_cong Num m n eq_mn Type (fun (x : Num) => seq x a). - -Definition IntModNum_cong : forall (m : Num), forall (n : Num), forall (_1 : @Init.Logic.eq Num m n), @Init.Logic.eq Type (IntModNum m) (IntModNum n) := - fun (m : Num) (n : Num) (eq_mn : @Init.Logic.eq Num m n) => SAWCorePrelude.eq_cong Num m n eq_mn Type IntModNum. - -Definition fun_cong : forall (a : Type), forall (b : Type), forall (c : Type), forall (d : Type), forall (_1 : @Init.Logic.eq Type a b), forall (_2 : @Init.Logic.eq Type c d), @Init.Logic.eq Type (forall (_3 : a), c) (forall (_3 : b), d) := - fun (a : Type) (b : Type) (c : Type) (d : Type) (eq_ab : @Init.Logic.eq Type a b) (eq_cd : @Init.Logic.eq Type c d) => SAWCorePrelude.trans Type (forall (_1 : a), c) (forall (_1 : b), c) (forall (_1 : b), d) (SAWCorePrelude.eq_cong Type a b eq_ab Type (fun (x : Type) => forall (_1 : x), c)) (SAWCorePrelude.eq_cong Type c d eq_cd Type (fun (x : Type) => forall (_1 : b), x)). - -Definition pair_cong : forall (a : Type), forall (a' : Type), forall (b : Type), forall (b' : Type), forall (_1 : @Init.Logic.eq Type a a'), forall (_2 : @Init.Logic.eq Type b b'), @Init.Logic.eq Type (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairType a' b') := - fun (a : Type) (a' : Type) (b : Type) (b' : Type) (eq_a : @Init.Logic.eq Type a a') (eq_b : @Init.Logic.eq Type b b') => SAWCorePrelude.trans Type (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairType a' b) (SAWCoreScaffolding.PairType a' b') (SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x : Type) => SAWCoreScaffolding.PairType x b)) (SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x : Type) => SAWCoreScaffolding.PairType a' x)). - -Definition pair_cong1 : forall (a : Type), forall (a' : Type), forall (b : Type), forall (_1 : @Init.Logic.eq Type a a'), @Init.Logic.eq Type (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairType a' b) := - fun (a : Type) (a' : Type) (b : Type) (eq_a : @Init.Logic.eq Type a a') => SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x : Type) => SAWCoreScaffolding.PairType x b). - -Definition pair_cong2 : forall (a : Type), forall (b : Type), forall (b' : Type), forall (_1 : @Init.Logic.eq Type b b'), @Init.Logic.eq Type (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairType a b') := - fun (a : Type) (b : Type) (b' : Type) (eq_b : @Init.Logic.eq Type b b') => SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x : Type) => SAWCoreScaffolding.PairType a x). - -Definition record_cong : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (a' : Type), forall (b : Type), forall (b' : Type), forall (_1 : @Init.Logic.eq Type a a'), forall (_2 : @Init.Logic.eq Type b b'), @Init.Logic.eq Type (SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons s a' b') := - fun (s : Stdlib.Strings.String.string) (a : Type) (a' : Type) (b : Type) (b' : Type) (eq_a : @Init.Logic.eq Type a a') (eq_b : @Init.Logic.eq Type b b') => SAWCorePrelude.trans Type (SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons s a' b) (SAWCoreScaffolding.RecordTypeCons s a' b') (SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x : Type) => SAWCoreScaffolding.RecordTypeCons s x b)) (SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x : Type) => SAWCoreScaffolding.RecordTypeCons s a' x)). - -Definition record_cong1 : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (a' : Type), forall (b : Type), forall (_1 : @Init.Logic.eq Type a a'), @Init.Logic.eq Type (SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons s a' b) := - fun (s : Stdlib.Strings.String.string) (a : Type) (a' : Type) (b : Type) (eq_a : @Init.Logic.eq Type a a') => SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x : Type) => SAWCoreScaffolding.RecordTypeCons s x b). - -Definition record_cong2 : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (b' : Type), forall (_1 : @Init.Logic.eq Type b b'), @Init.Logic.eq Type (SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons s a b') := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (b' : Type) (eq_b : @Init.Logic.eq Type b b') => SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x : Type) => SAWCoreScaffolding.RecordTypeCons s a x). - -(* "Cryptol::unsafeAssert_same_Num@core" was skipped *) - -Definition eListSel : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (n : Num), forall (_1 : seq n a), forall (_2 : Init.Datatypes.nat), a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (num : Num) => forall (_1 : seq num a), forall (_2 : Init.Datatypes.nat), a) (fun (n1 : Init.Datatypes.nat) => SAWCorePrelude.sawAt n1 a) (SAWCorePrelude.streamGet a) n. - -Definition from : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (m : Num), forall (n : Num), forall (_1 : seq m a), forall (_2 : forall (_2 : a), seq n b), seq (tcMul m n) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (m : Num) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (_1 : seq m1 a), forall (_2 : forall (_2 : a), seq n b), seq (tcMul m1 n) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (m1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m1 a), forall (_2 : forall (_2 : a), seq n1 b), seq (tcMul (TCNum m1) n1) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n1 : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec m1 a) (k : forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec n1 b) => let var__0 := SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) in - SAWCorePrelude.join m1 n1 var__0 (SAWCorePrelude.map a (SAWCoreVectorsAsRocqVectors.Vec n1 var__0) (fun (x : a) => SAWCorePrelude.map b var__0 (fun (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit)) n1 (k x)) m1 xs)) (SAWCorePrelude.natCase (fun (m' : Init.Datatypes.nat) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m' a), forall (_2 : forall (_2 : a), SAWCorePrelude.Stream b), seq (SAWCoreScaffolding.if0Nat Num m' (TCNum SAWCoreScaffolding.Zero) TCInf) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (xs : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero a) (k : forall (_1 : a), SAWCorePrelude.Stream b) => SAWCoreVectorsAsRocqVectors.EmptyVec (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (m' : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ m') a) (k : forall (_1 : a), SAWCorePrelude.Stream b) => (fun (x : a) => SAWCorePrelude.streamMap b (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit)) (k x)) (SAWCorePrelude.sawAt (SAWCoreScaffolding.Succ m') a xs SAWCoreScaffolding.Zero)) m1) n) (@CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : SAWCorePrelude.Stream a), forall (_2 : forall (_2 : a), seq n1 b), seq (tcMul TCInf n1) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n1 : Init.Datatypes.nat) => SAWCorePrelude.natCase (fun (n' : Init.Datatypes.nat) => forall (_1 : SAWCorePrelude.Stream a), forall (_2 : forall (_2 : a), SAWCoreVectorsAsRocqVectors.Vec n' b), seq (SAWCoreScaffolding.if0Nat Num n' (TCNum SAWCoreScaffolding.Zero) TCInf) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (xs : SAWCorePrelude.Stream a) (k : forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero b) => SAWCoreVectorsAsRocqVectors.EmptyVec (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n' : Init.Datatypes.nat) (xs : SAWCorePrelude.Stream a) (k : forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n') b) => let var__0 := SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) in - SAWCorePrelude.streamJoin var__0 n' (SAWCorePrelude.streamMap a (SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n') var__0) (fun (x : a) => SAWCorePrelude.map b var__0 (fun (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit)) (SAWCoreScaffolding.Succ n') (k x)) xs)) n1) (fun (xs : SAWCorePrelude.Stream a) (k : forall (_1 : a), SAWCorePrelude.Stream b) => (fun (x : a) => SAWCorePrelude.streamMap b (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit)) (k x)) (SAWCorePrelude.streamGet a xs SAWCoreScaffolding.Zero)) n) m. - -Definition mlet : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (n : Num), forall (_1 : a), forall (_2 : forall (_2 : a), seq n b), seq n (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : a), forall (_2 : forall (_2 : a), seq n1 b), seq n1 (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n1 : Init.Datatypes.nat) (x : a) (f : forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec n1 b) => SAWCorePrelude.map b (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit)) n1 (f x)) (fun (x : a) (f : forall (_1 : a), SAWCorePrelude.Stream b) => SAWCorePrelude.streamMap b (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit)) (f x)) n. - -Definition seqZip : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (m : Num), forall (n : Num), forall (_1 : seq m a), forall (_2 : seq n b), seq (tcMin m n) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (m : Num) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (_1 : seq m1 a), forall (_2 : seq n b), seq (tcMin m1 n) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (m1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m1 a), forall (_2 : seq n1 b), seq (tcMin (TCNum m1) n1) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n1 : Init.Datatypes.nat) => SAWCorePrelude.zip a b m1 n1) (fun (xs : SAWCoreVectorsAsRocqVectors.Vec m1 a) (ys : SAWCorePrelude.Stream b) => SAWCoreVectorsAsRocqVectors.gen m1 (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (i : Init.Datatypes.nat) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) (SAWCorePrelude.sawAt m1 a xs i) (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType (SAWCorePrelude.streamGet b ys i) SAWCoreScaffolding.Unit))) n) (@CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : SAWCorePrelude.Stream a), forall (_2 : seq n1 b), seq (tcMin TCInf n1) (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n1 : Init.Datatypes.nat) (xs : SAWCorePrelude.Stream a) (ys : SAWCoreVectorsAsRocqVectors.Vec n1 b) => SAWCoreVectorsAsRocqVectors.gen n1 (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (i : Init.Datatypes.nat) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) (SAWCorePrelude.streamGet a xs i) (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType (SAWCorePrelude.sawAt n1 b ys i) SAWCoreScaffolding.Unit))) (SAWCorePrelude.streamMap2 a b (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (x : a) (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit))) n) m. - -Definition zipSame : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n b), SAWCoreVectorsAsRocqVectors.Vec n (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n a) (y : SAWCoreVectorsAsRocqVectors.Vec n b) => SAWCoreVectorsAsRocqVectors.gen n (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (i : Init.Datatypes.nat) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) (SAWCorePrelude.sawAt n a x i) (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType (SAWCorePrelude.sawAt n b y i) SAWCoreScaffolding.Unit)). - -Definition seqZipSame : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (n : Num), forall (_1 : seq n a), forall (_2 : seq n b), seq n (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 a), forall (_2 : seq n1 b), seq n1 (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType))) (fun (n1 : Init.Datatypes.nat) => zipSame a b n1) (SAWCorePrelude.streamMap2 a b (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun (x : a) (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit))) n. - -Definition seqBinary : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : forall (_1 : a), forall (_2 : a), a), forall (_2 : seq n a), forall (_3 : seq n a), seq n a := - fun (n : Num) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (f : forall (_1 : a), forall (_2 : a), a) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 a), forall (_2 : seq n1 a), seq n1 a) (fun (n1 : Init.Datatypes.nat) => SAWCorePrelude.zipWith a a a f n1) (SAWCorePrelude.streamMap2 a a a f) n. - -Definition unitUnary : forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType := - fun (_1 : SAWCoreScaffolding.UnitType) => SAWCoreScaffolding.Unit. - -Definition unitBinary : forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType := - fun (_1 : SAWCoreScaffolding.UnitType) (_2 : SAWCoreScaffolding.UnitType) => SAWCoreScaffolding.Unit. - -Definition pairUnary : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), a), forall (_2 : forall (_2 : b), b), forall (_3 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b := - fun (a : Type) (b : Type) (f : forall (_1 : a), a) (g : forall (_1 : b), b) (xy : SAWCoreScaffolding.PairType a b) => SAWCoreScaffolding.PairValue a b (f (SAWCorePrelude.Pair_fst a b xy)) (g (SAWCorePrelude.Pair_snd a b xy)). - -Definition pairBinary : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), a), forall (_2 : forall (_2 : b), forall (_3 : b), b), forall (_3 : SAWCoreScaffolding.PairType a b), forall (_4 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b := - fun (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), a) (g : forall (_1 : b), forall (_2 : b), b) (x12 : SAWCoreScaffolding.PairType a b) (y12 : SAWCoreScaffolding.PairType a b) => SAWCoreScaffolding.PairValue a b (f (SAWCorePrelude.Pair_fst a b x12) (SAWCorePrelude.Pair_fst a b y12)) (g (SAWCorePrelude.Pair_snd a b x12) (SAWCorePrelude.Pair_snd a b y12)). - -Definition emptyUnary : forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil := - fun (_1 : SAWCoreScaffolding.RecordTypeNil) => SAWCoreScaffolding.RecordNil. - -Definition emptyBinary : forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil := - fun (_1 : SAWCoreScaffolding.RecordTypeNil) (_2 : SAWCoreScaffolding.RecordTypeNil) => SAWCoreScaffolding.RecordNil. - -Definition recordUnary : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), a), forall (_2 : forall (_2 : b), b), forall (_3 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : a), a) (g : forall (_1 : b), b) (x : SAWCoreScaffolding.RecordTypeCons s a b) => @SAWCoreScaffolding.RecordCons s a b (f (@SAWCoreScaffolding.recordHead s a b x)) (g (@SAWCoreScaffolding.recordTail s a b x)). - -Definition recordBinary : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), a), forall (_2 : forall (_2 : b), forall (_3 : b), b), forall (_3 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_4 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), a) (g : forall (_1 : b), forall (_2 : b), b) (x : SAWCoreScaffolding.RecordTypeCons s a b) (y : SAWCoreScaffolding.RecordTypeCons s a b) => @SAWCoreScaffolding.RecordCons s a b (f (@SAWCoreScaffolding.recordHead s a b x) (@SAWCoreScaffolding.recordHead s a b y)) (g (@SAWCoreScaffolding.recordTail s a b x) (@SAWCoreScaffolding.recordTail s a b y)). - -Definition funBinary : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : b), forall (_2 : b), b), forall (_2 : forall (_2 : a), b), forall (_3 : forall (_3 : a), b), forall (_4 : a), b := - fun (a : Type) (b : Type) (op : forall (_1 : b), forall (_2 : b), b) (f : forall (_1 : a), b) (g : forall (_1 : a), b) (x : a) => op (f x) (g x). - -Definition errorUnary : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : a), a := - fun (s : Stdlib.Strings.String.string) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (_1 : a) => SAWCoreScaffolding.error a s. - -Definition errorBinary : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : a), forall (_2 : a), a := - fun (s : Stdlib.Strings.String.string) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (_1 : a) (_2 : a) => SAWCoreScaffolding.error a s. - -Definition boolCmp : forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) (k : Init.Datatypes.bool) => if x then Init.Datatypes.andb y k else Init.Datatypes.orb y k. - -Definition boolLt : forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) => Init.Datatypes.andb (Init.Datatypes.negb x) y. - -Definition integerCmp : forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (x : SAWCoreScaffolding.Integer) (y : SAWCoreScaffolding.Integer) (k : Init.Datatypes.bool) => Init.Datatypes.orb (SAWCoreScaffolding.intLt x y) (Init.Datatypes.andb (SAWCoreScaffolding.intEqb x y) k). - -Definition rationalCmp : forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (x : SAWCoreScaffolding.Rational) (y : SAWCoreScaffolding.Rational) (k : Init.Datatypes.bool) => Init.Datatypes.orb (SAWCoreScaffolding.rationalLt x y) (Init.Datatypes.andb (SAWCoreScaffolding.rationalEqb x y) k). - -Definition bvCmp : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (k : Init.Datatypes.bool) => Init.Datatypes.orb (SAWCoreVectorsAsRocqVectors.bvult n x y) (Init.Datatypes.andb (SAWCorePrelude.bvEq n x y) k). - -Definition bvSCmp : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (k : Init.Datatypes.bool) => Init.Datatypes.orb (SAWCoreVectorsAsRocqVectors.bvslt n x y) (Init.Datatypes.andb (SAWCorePrelude.bvEq n x y) k). - -Definition vecCmp : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_4 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (f : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (ys : SAWCoreVectorsAsRocqVectors.Vec n a) (k : Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.foldr (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) Init.Datatypes.bool n (fun (f1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) => f1) k (SAWCorePrelude.zipWith a a (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) f n xs ys). - -Definition vecLt : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_2 : forall (_2 : a), forall (_3 : a), Init.Datatypes.bool), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_4 : SAWCoreVectorsAsRocqVectors.Vec n a), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (f : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (g : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (ys : SAWCoreVectorsAsRocqVectors.Vec n a) => SAWCoreVectorsAsRocqVectors.foldr (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) Init.Datatypes.bool n (fun (f1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) => f1) Init.Datatypes.false (SAWCorePrelude.zipWith a a (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) f n xs ys). - -Definition unitCmp : forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.UnitType) (_2 : SAWCoreScaffolding.UnitType) (k : Init.Datatypes.bool) => k. - -Definition unitLe : forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.UnitType) (_2 : SAWCoreScaffolding.UnitType) => Init.Datatypes.true. - -Definition unitLt : forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.UnitType) (_2 : SAWCoreScaffolding.UnitType) => Init.Datatypes.false. - -Definition pairCmp : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_2 : forall (_2 : b), forall (_3 : b), forall (_4 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_3 : SAWCoreScaffolding.PairType a b), forall (_4 : SAWCoreScaffolding.PairType a b), forall (_5 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (g : forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (x12 : SAWCoreScaffolding.PairType a b) (y12 : SAWCoreScaffolding.PairType a b) (k : Init.Datatypes.bool) => f (SAWCorePrelude.Pair_fst a b x12) (SAWCorePrelude.Pair_fst a b y12) (g (SAWCorePrelude.Pair_snd a b x12) (SAWCorePrelude.Pair_snd a b y12) k). - -Definition pairLt : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_2 : forall (_2 : b), forall (_3 : b), Init.Datatypes.bool), forall (_3 : SAWCoreScaffolding.PairType a b), forall (_4 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool := - fun (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (g : forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (x : SAWCoreScaffolding.PairType a b) (y : SAWCoreScaffolding.PairType a b) => f (SAWCorePrelude.Pair_fst a b x) (SAWCorePrelude.Pair_fst a b y) (g (SAWCorePrelude.Pair_snd a b x) (SAWCorePrelude.Pair_snd a b y)). - -Definition emptyCmp : forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.RecordTypeNil) (_2 : SAWCoreScaffolding.RecordTypeNil) (k : Init.Datatypes.bool) => k. - -Definition emptyLe : forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.RecordTypeNil) (_2 : SAWCoreScaffolding.RecordTypeNil) => Init.Datatypes.true. - -Definition emptyLt : forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.RecordTypeNil) (_2 : SAWCoreScaffolding.RecordTypeNil) => Init.Datatypes.false. - -Definition recordEq : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool), forall (_2 : forall (_2 : b), forall (_3 : b), Init.Datatypes.bool), forall (_3 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_4 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (g : forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (x : SAWCoreScaffolding.RecordTypeCons s a b) (y : SAWCoreScaffolding.RecordTypeCons s a b) => Init.Datatypes.andb (f (@SAWCoreScaffolding.recordHead s a b x) (@SAWCoreScaffolding.recordHead s a b y)) (g (@SAWCoreScaffolding.recordTail s a b x) (@SAWCoreScaffolding.recordTail s a b y)). - -Definition recordCmp : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_2 : forall (_2 : b), forall (_3 : b), forall (_4 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_3 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_4 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_5 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (g : forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (x : SAWCoreScaffolding.RecordTypeCons s a b) (y : SAWCoreScaffolding.RecordTypeCons s a b) (k : Init.Datatypes.bool) => f (@SAWCoreScaffolding.recordHead s a b x) (@SAWCoreScaffolding.recordHead s a b y) (g (@SAWCoreScaffolding.recordTail s a b x) (@SAWCoreScaffolding.recordTail s a b y) k). - -Definition recordLt : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool), forall (_2 : forall (_2 : b), forall (_3 : b), Init.Datatypes.bool), forall (_3 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_4 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (g : forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (x : SAWCoreScaffolding.RecordTypeCons s a b) (y : SAWCoreScaffolding.RecordTypeCons s a b) => f (@SAWCoreScaffolding.recordHead s a b x) (@SAWCoreScaffolding.recordHead s a b y) (g (@SAWCoreScaffolding.recordTail s a b x) (@SAWCoreScaffolding.recordTail s a b y)). - -Definition PEq : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "eq"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil. - -Definition PEqBit : PEq Init.Datatypes.bool := - @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil SAWCoreScaffolding.boolEqb SAWCoreScaffolding.RecordNil. - -Definition PEqInteger : PEq SAWCoreScaffolding.Integer := - @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil SAWCoreScaffolding.intEqb SAWCoreScaffolding.RecordNil. - -Definition PEqRational : PEq SAWCoreScaffolding.Rational := - @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil SAWCoreScaffolding.rationalEqb SAWCoreScaffolding.RecordNil. - -Definition PEqIntMod : forall (n : Init.Datatypes.nat), PEq (SAWCoreScaffolding.IntMod n) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCoreScaffolding.intModEqb n) SAWCoreScaffolding.RecordNil. - -Definition PEqIntModNum : forall (num : Num), PEq (IntModNum num) := - fun (num : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n : Num) => PEq (IntModNum n)) PEqIntMod PEqInteger num. - -Definition PEqVec : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PEq a), PEq (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PEq a) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.vecEq n a (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa)) SAWCoreScaffolding.RecordNil. - -Definition PEqSeq : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PEq a), PEq (seq n a) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PEq a), PEq (seq n1 a)) (fun (n1 : Init.Datatypes.nat) => PEqVec n1) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PEq a) => SAWCoreScaffolding.error (PEq (SAWCorePrelude.Stream a)) "invalid Eq instance"%string) n. - -Definition PEqWord : forall (n : Init.Datatypes.nat), PEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.bvEq n) SAWCoreScaffolding.RecordNil. - -Definition PEqSeqBool : forall (n : Num), PEq (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PEq (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => PEqWord n1) (SAWCoreScaffolding.error (PEq (SAWCorePrelude.Stream Init.Datatypes.bool)) "invalid Eq instance"%string) n. - -Definition PEqUnit : PEq SAWCoreScaffolding.UnitType := - @SAWCoreScaffolding.RecordCons "eq"%string (forall (x : SAWCoreScaffolding.UnitType), forall (y : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x : SAWCoreScaffolding.UnitType) (y : SAWCoreScaffolding.UnitType) => Init.Datatypes.true) SAWCoreScaffolding.RecordNil. - -Definition PEqPair : forall (a : Type), forall (b : Type), forall (_1 : PEq a), forall (_2 : PEq b), PEq (SAWCoreScaffolding.PairType a b) := - fun (a : Type) (b : Type) (pa : PEq a) (pb : PEq b) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.pairEq a b (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa) (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pb)) SAWCoreScaffolding.RecordNil. - -Definition PEqEmpty : PEq SAWCoreScaffolding.RecordTypeNil := - @SAWCoreScaffolding.RecordCons "eq"%string (forall (x : SAWCoreScaffolding.RecordTypeNil), forall (y : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x : SAWCoreScaffolding.RecordTypeNil) (y : SAWCoreScaffolding.RecordTypeNil) => Init.Datatypes.true) SAWCoreScaffolding.RecordNil. - -Definition PEqRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : PEq a), forall (_2 : PEq b), PEq (SAWCoreScaffolding.RecordTypeCons s a b) := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (pa : PEq a) (pb : PEq b) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (recordEq s a b (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa) (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pb)) SAWCoreScaffolding.RecordNil. - -Definition PEqVoid : PEq Init.Datatypes.Empty_set := - @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), Init.Datatypes.bool)) SAWCoreScaffolding.RecordNil. - -Definition PEqEither : forall (a : Type), forall (b : Type), forall (_1 : PEq a), forall (_2 : PEq b), PEq (Init.Datatypes.sum a b) := - fun (a : Type) (b : Type) (pa : PEq a) (pb : PEq b) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (e1 : Init.Datatypes.sum a b), forall (e2 : Init.Datatypes.sum a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (e1 : Init.Datatypes.sum a b) (e2 : Init.Datatypes.sum a b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa x1 x2) (fun (_y2 : b) => Init.Datatypes.false) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pb y1 y2) e2) e1) SAWCoreScaffolding.RecordNil. - -Definition PCmp : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))). - -Definition PCmpBit : PCmp Init.Datatypes.bool := - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqBit (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) boolCmp (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) SAWCorePrelude.implies (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil boolLt SAWCoreScaffolding.RecordNil))). - -Definition PCmpInteger : PCmp SAWCoreScaffolding.Integer := - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqInteger (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) integerCmp (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.intLe (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil SAWCoreScaffolding.intLt SAWCoreScaffolding.RecordNil))). - -Definition PCmpRational : PCmp SAWCoreScaffolding.Rational := - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqRational (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) rationalCmp (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.rationalLe (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil SAWCoreScaffolding.rationalLt SAWCoreScaffolding.RecordNil))). - -Definition PCmpVec : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PCmp a), PCmp (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PCmp a) => let var__0 := SAWCoreVectorsAsRocqVectors.Vec n a in - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq var__0) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : var__0), forall (_2 : var__0), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqVec n a (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : var__0), forall (_2 : var__0), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (vecCmp n a (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa))) (@SAWCoreScaffolding.RecordCons "le"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) (y : var__0) => vecCmp n a (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) x y Init.Datatypes.true) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x : var__0) (y : var__0) => vecCmp n a (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) x y Init.Datatypes.false) SAWCoreScaffolding.RecordNil))). - -Definition PCmpSeq : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PCmp a), PCmp (seq n a) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PCmp a), PCmp (seq n1 a)) (fun (n1 : Init.Datatypes.nat) => PCmpVec n1) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PCmp a) => SAWCoreScaffolding.error (PCmp (SAWCorePrelude.Stream a)) "invalid Cmp instance"%string) n. - -Definition PCmpWord : forall (n : Init.Datatypes.nat), PCmp (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqWord n) (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (bvCmp n) (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (SAWCoreVectorsAsRocqVectors.bvule n) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCoreVectorsAsRocqVectors.bvult n) SAWCoreScaffolding.RecordNil))). - -Definition PCmpSeqBool : forall (n : Num), PCmp (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PCmp (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => PCmpWord n1) (SAWCoreScaffolding.error (PCmp (SAWCorePrelude.Stream Init.Datatypes.bool)) "invalid Cmp instance"%string) n. - -Definition PCmpUnit : PCmp SAWCoreScaffolding.UnitType := - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqUnit (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) unitCmp (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) unitLe (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil unitLt SAWCoreScaffolding.RecordNil))). - -Definition PCmpPair : forall (a : Type), forall (b : Type), forall (_1 : PCmp a), forall (_2 : PCmp b), PCmp (SAWCoreScaffolding.PairType a b) := - fun (a : Type) (b : Type) (pa : PCmp a) (pb : PCmp b) => let var__0 := @SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) in - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq (SAWCoreScaffolding.PairType a b)) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqPair a b (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (pairCmp a b var__0 (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))) (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (pairLt a b var__0 (@SAWCoreScaffolding.recordHead "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)))) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (pairLt a b var__0 (@SAWCoreScaffolding.recordHead "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))))) SAWCoreScaffolding.RecordNil))). - -Definition PCmpEmpty : PCmp SAWCoreScaffolding.RecordTypeNil := - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqEmpty (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) emptyCmp (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) emptyLe (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil emptyLt SAWCoreScaffolding.RecordNil))). - -Definition PCmpRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : PCmp a), forall (_2 : PCmp b), PCmp (SAWCoreScaffolding.RecordTypeCons s a b) := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (pa : PCmp a) (pb : PCmp b) => let var__0 := @SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) in - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq (SAWCoreScaffolding.RecordTypeCons s a b)) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqRecord s a b (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (recordCmp s a b var__0 (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))) (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (recordLt s a b var__0 (@SAWCoreScaffolding.recordHead "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)))) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (recordLt s a b var__0 (@SAWCoreScaffolding.recordHead "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))))) SAWCoreScaffolding.RecordNil))). - -Definition PCmpVoid : PCmp Init.Datatypes.Empty_set := - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq Init.Datatypes.Empty_set) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqVoid (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool)) (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), Init.Datatypes.bool)) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), Init.Datatypes.bool)) SAWCoreScaffolding.RecordNil))). - -Definition PCmpEither : forall (a : Type), forall (b : Type), forall (_1 : PCmp a), forall (_2 : PCmp b), PCmp (Init.Datatypes.sum a b) := - fun (a : Type) (b : Type) (pa : PCmp a) (pb : PCmp b) => let var__0 := Init.Datatypes.sum a b in - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq var__0) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (e1 : var__0), forall (e2 : var__0), forall (k : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqEither a b (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (e1 : var__0), forall (e2 : var__0), forall (k : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (fun (e1 : var__0) (e2 : var__0) (k : Init.Datatypes.bool) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) x1 x2 k) (fun (_y2 : b) => Init.Datatypes.true) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb) y1 y2 k) e2) e1) (@SAWCoreScaffolding.RecordCons "le"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (fun (e1 : var__0) (e2 : var__0) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) x1 x2) (fun (_y2 : b) => Init.Datatypes.true) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) y1 y2) e2) e1) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (e1 : var__0) (e2 : var__0) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa))) x1 x2) (fun (_y2 : b) => Init.Datatypes.true) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))) y1 y2) e2) e1) SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmp : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))). - -Definition PSignedCmpVec : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PSignedCmp a), PSignedCmp (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PSignedCmp a) => let var__0 := SAWCoreVectorsAsRocqVectors.Vec n a in - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq var__0) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : var__0), forall (_2 : var__0), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqVec n a (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : var__0), forall (_2 : var__0), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (vecCmp n a (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa))) (@SAWCoreScaffolding.RecordCons "sle"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) (y : var__0) => vecCmp n a (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) x y Init.Datatypes.true) (@SAWCoreScaffolding.RecordCons "slt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x : var__0) (y : var__0) => vecCmp n a (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) x y Init.Datatypes.false) SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpSeq : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PSignedCmp a), PSignedCmp (seq n a) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PSignedCmp a), PSignedCmp (seq n1 a)) (fun (n1 : Init.Datatypes.nat) => PSignedCmpVec n1) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PSignedCmp a) => SAWCoreScaffolding.error (PSignedCmp (SAWCorePrelude.Stream a)) "invalid SignedCmp instance"%string) n. - -Definition PSignedCmpWord : forall (n : Init.Datatypes.nat), PSignedCmp (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqWord n) (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (bvSCmp n) (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (SAWCoreVectorsAsRocqVectors.bvsle n) (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCoreVectorsAsRocqVectors.bvslt n) SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpSeqBool : forall (n : Num), PSignedCmp (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PSignedCmp (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => PSignedCmpWord n1) (SAWCoreScaffolding.error (PSignedCmp (SAWCorePrelude.Stream Init.Datatypes.bool)) "invalid SignedCmp instance"%string) n. - -Definition PSignedCmpUnit : PSignedCmp SAWCoreScaffolding.UnitType := - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqUnit (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) unitCmp (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) unitLe (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil unitLt SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpPair : forall (a : Type), forall (b : Type), forall (_1 : PSignedCmp a), forall (_2 : PSignedCmp b), PSignedCmp (SAWCoreScaffolding.PairType a b) := - fun (a : Type) (b : Type) (pa : PSignedCmp a) (pb : PSignedCmp b) => let var__0 := @SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) in - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq (SAWCoreScaffolding.PairType a b)) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqPair a b (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (pairCmp a b var__0 (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))) (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (pairLt a b var__0 (@SAWCoreScaffolding.recordHead "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)))) (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (pairLt a b var__0 (@SAWCoreScaffolding.recordHead "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))))) SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpEmpty : PSignedCmp SAWCoreScaffolding.RecordTypeNil := - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqEmpty (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) emptyCmp (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) emptyLe (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil emptyLt SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : PSignedCmp a), forall (_2 : PSignedCmp b), PSignedCmp (SAWCoreScaffolding.RecordTypeCons s a b) := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (pa : PSignedCmp a) (pb : PSignedCmp b) => let var__0 := @SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) in - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq (SAWCoreScaffolding.RecordTypeCons s a b)) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqRecord s a b (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (recordCmp s a b var__0 (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))) (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (recordLt s a b var__0 (@SAWCoreScaffolding.recordHead "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)))) (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (recordLt s a b var__0 (@SAWCoreScaffolding.recordHead "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))))) SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpVoid : PSignedCmp Init.Datatypes.Empty_set := - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq Init.Datatypes.Empty_set) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) PEqVoid (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool)) (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), Init.Datatypes.bool)) (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 : Init.Datatypes.Empty_set), forall (_2 : Init.Datatypes.Empty_set), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.elimVoid (forall (_1 : Init.Datatypes.Empty_set), Init.Datatypes.bool)) SAWCoreScaffolding.RecordNil))). - -Definition PSignedCmpEither : forall (a : Type), forall (b : Type), forall (_1 : PSignedCmp a), forall (_2 : PSignedCmp b), PSignedCmp (Init.Datatypes.sum a b) := - fun (a : Type) (b : Type) (pa : PSignedCmp a) (pb : PSignedCmp b) => let var__0 := Init.Datatypes.sum a b in - @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq var__0) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (e1 : var__0), forall (e2 : var__0), forall (k : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqEither a b (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (e1 : var__0), forall (e2 : var__0), forall (k : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (fun (e1 : var__0) (e2 : var__0) (k : Init.Datatypes.bool) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa) x1 x2 k) (fun (_y2 : b) => Init.Datatypes.true) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb) y1 y2 k) e2) e1) (@SAWCoreScaffolding.RecordCons "sle"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (fun (e1 : var__0) (e2 : var__0) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)) x1 x2) (fun (_y2 : b) => Init.Datatypes.true) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb)) y1 y2) e2) e1) (@SAWCoreScaffolding.RecordCons "slt"%string (forall (e1 : var__0), forall (e2 : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (e1 : var__0) (e2 : var__0) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1 : a) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2 : a) => @SAWCoreScaffolding.recordHead "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa))) x1 x2) (fun (_y2 : b) => Init.Datatypes.true) e2) (fun (y1 : b) => SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2 : a) => Init.Datatypes.false) (fun (y2 : b) => @SAWCoreScaffolding.recordHead "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : b), forall (_2 : b), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pb))) y1 y2) e2) e1) SAWCoreScaffolding.RecordNil))). - -Definition PZero : forall (_1 : Type), Type := - fun (a : Type) => a. - -Definition PZeroBit : PZero Init.Datatypes.bool := - Init.Datatypes.false. - -Definition PZeroInteger : PZero SAWCoreScaffolding.Integer := - SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero. - -Definition PZeroIntMod : forall (n : Init.Datatypes.nat), PZero (SAWCoreScaffolding.IntMod n) := - fun (n : Init.Datatypes.nat) => SAWCoreScaffolding.toIntMod n (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero). - -Definition PZeroRational : PZero SAWCoreScaffolding.Rational := - SAWCorePrelude.rationalZero. - -Definition PZeroIntModNum : forall (num : Num), PZero (IntModNum num) := - fun (num : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n : Num) => PZero (IntModNum n)) PZeroIntMod PZeroInteger num. - -Definition PZeroSeq : forall (n : Num), forall (a : Type), forall (_1 : PZero a), PZero (seq n a) := - fun (n : Num) (a : Type) (pa : PZero a) => seqConst n a pa. - -Definition PZeroSeqBool : forall (n : Num), PZero (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PZero (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.bvNat n1 SAWCoreScaffolding.Zero) (SAWCorePrelude.streamConst Init.Datatypes.bool Init.Datatypes.false) n. - -Definition PZeroFun : forall (a : Type), forall (b : Type), forall (_1 : PZero b), PZero (forall (_2 : a), b) := - fun (a : Type) (b : Type) (pb : PZero b) (_1 : a) => pb. - -Definition PLogic : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))). - -Definition PLogicBit : PLogic Init.Datatypes.bool := - @SAWCoreScaffolding.RecordCons "logicZero"%string (PZero Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)))) PZeroBit (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) Init.Datatypes.andb (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) Init.Datatypes.orb (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) Init.Datatypes.xorb (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil Init.Datatypes.negb SAWCoreScaffolding.RecordNil)))). - -Definition PLogicVec : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLogic a), PLogic (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLogic a) => @SAWCoreScaffolding.RecordCons "logicZero"%string (SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil)))) (SAWCorePrelude.replicate n a (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)) (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil))) (SAWCorePrelude.zipWith a a a (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)) n) (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.zipWith a a a (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))) n) (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.zipWith a a a (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)))) n) (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.map a a (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))))) n) SAWCoreScaffolding.RecordNil)))). - -Definition PLogicStream : forall (a : Type), forall (_1 : PLogic a), PLogic (SAWCorePrelude.Stream a) := - fun (a : Type) (pa : PLogic a) => @SAWCoreScaffolding.RecordCons "logicZero"%string (SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil)))) (SAWCorePrelude.streamConst a (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)) (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil))) (SAWCorePrelude.streamMap2 a a a (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))) (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.streamMap2 a a a (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)))) (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.streamMap2 a a a (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))))) (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.streamMap a a (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)))))) SAWCoreScaffolding.RecordNil)))). - -Definition PLogicSeq : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLogic a), PLogic (seq n a) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLogic a), PLogic (seq n1 a)) (fun (n1 : Init.Datatypes.nat) => PLogicVec n1) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => PLogicStream a) n. - -Definition PLogicWord : forall (n : Init.Datatypes.nat), PLogic (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "logicZero"%string (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)))) (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (SAWCorePrelude.bvAnd n) (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.bvOr n) (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.bvXor n) (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.bvNot n) SAWCoreScaffolding.RecordNil)))). - -Definition PLogicSeqBool : forall (n : Num), PLogic (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PLogic (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => PLogicWord n1) (PLogicStream Init.Datatypes.bool PLogicBit) n. - -Definition PLogicFun : forall (a : Type), forall (b : Type), forall (_1 : PLogic b), PLogic (forall (_2 : a), b) := - fun (a : Type) (b : Type) (pb : PLogic b) => @SAWCoreScaffolding.RecordCons "logicZero"%string (PZero (forall (_1 : a), b)) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) SAWCoreScaffolding.RecordTypeNil)))) (PZeroFun a b (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)) (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) SAWCoreScaffolding.RecordTypeNil))) (funBinary a b (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb))) (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) SAWCoreScaffolding.RecordTypeNil)) (funBinary a b (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)))) (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) SAWCoreScaffolding.RecordTypeNil) (funBinary a b (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb))))) (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) SAWCoreScaffolding.RecordTypeNil (compose a b b (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)))))) SAWCoreScaffolding.RecordNil)))). - -Definition PLogicUnit : PLogic SAWCoreScaffolding.UnitType := - @SAWCoreScaffolding.RecordCons "logicZero"%string SAWCoreScaffolding.UnitType (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil)))) SAWCoreScaffolding.Unit (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil))) unitBinary (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil)) unitBinary (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil) unitBinary (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil unitUnary SAWCoreScaffolding.RecordNil)))). - -Definition PLogicPair : forall (a : Type), forall (b : Type), forall (_1 : PLogic a), forall (_2 : PLogic b), PLogic (SAWCoreScaffolding.PairType a b) := - fun (a : Type) (b : Type) (pa : PLogic a) (pb : PLogic b) => @SAWCoreScaffolding.RecordCons "logicZero"%string (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil)))) (SAWCoreScaffolding.PairValue a b (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa) (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)) (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil))) (pairBinary a b (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)) (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb))) (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil)) (pairBinary a b (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))) (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)))) (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil) (pairBinary a b (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)))) (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb))))) (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil (pairUnary a b (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))))) (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)))))) SAWCoreScaffolding.RecordNil)))). - -Definition PLogicEmpty : PLogic SAWCoreScaffolding.RecordTypeNil := - @SAWCoreScaffolding.RecordCons "logicZero"%string SAWCoreScaffolding.RecordTypeNil (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil)))) SAWCoreScaffolding.RecordNil (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil))) emptyBinary (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil)) emptyBinary (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil) emptyBinary (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil emptyUnary SAWCoreScaffolding.RecordNil)))). - -Definition PLogicRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : PLogic a), forall (_2 : PLogic b), PLogic (SAWCoreScaffolding.RecordTypeCons s a b) := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (pa : PLogic a) (pb : PLogic b) => @SAWCoreScaffolding.RecordCons "logicZero"%string (SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.RecordCons s a b (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa) (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)) (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil))) (recordBinary s a b (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)) (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb))) (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil)) (recordBinary s a b (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))) (@SAWCoreScaffolding.recordHead "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)))) (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil) (recordBinary s a b (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)))) (@SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb))))) (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil (recordUnary s a b (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))))) (@SAWCoreScaffolding.recordHead "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : b), b) SAWCoreScaffolding.RecordTypeNil)))) pb)))))) SAWCoreScaffolding.RecordNil)))). - -Definition PRing : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))). - -Definition PRingInteger : PRing SAWCoreScaffolding.Integer := - @SAWCoreScaffolding.RecordCons "ringZero"%string (PZero SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) PZeroInteger (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) SAWCoreScaffolding.intAdd (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) SAWCoreScaffolding.intSub (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)) SAWCoreScaffolding.intMul (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.intNeg (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => i) SAWCoreScaffolding.RecordNil))))). - -Definition PRingIntMod : forall (n : Init.Datatypes.nat), PRing (SAWCoreScaffolding.IntMod n) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "ringZero"%string (PZero (SAWCoreScaffolding.IntMod n)) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.IntMod n) SAWCoreScaffolding.RecordTypeNil))))) (PZeroIntMod n) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.IntMod n) SAWCoreScaffolding.RecordTypeNil)))) (SAWCoreScaffolding.intModAdd n) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.IntMod n) SAWCoreScaffolding.RecordTypeNil))) (SAWCoreScaffolding.intModSub n) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.IntMod n), forall (_2 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.IntMod n) SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.intModMul n) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.IntMod n), SAWCoreScaffolding.IntMod n) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.IntMod n) SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.intModNeg n) (@SAWCoreScaffolding.RecordCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.IntMod n) SAWCoreScaffolding.RecordTypeNil (SAWCoreScaffolding.toIntMod n) SAWCoreScaffolding.RecordNil))))). - -Definition PRingIntModNum : forall (num : Num), PRing (IntModNum num) := - fun (num : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n : Num) => PRing (IntModNum n)) PRingIntMod PRingInteger num. - -Definition PRingRational : PRing SAWCoreScaffolding.Rational := - @SAWCoreScaffolding.RecordCons "ringZero"%string (PZero SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil))))) PZeroRational (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil)))) SAWCoreScaffolding.rationalAdd (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil))) SAWCoreScaffolding.rationalSub (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil)) SAWCoreScaffolding.rationalMul (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.rationalNeg (@SAWCoreScaffolding.RecordCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil SAWCorePrelude.integerToRational SAWCoreScaffolding.RecordNil))))). - -Definition PRingVec : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PRing a), PRing (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PRing a) => @SAWCoreScaffolding.RecordCons "ringZero"%string (SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil))))) (SAWCorePrelude.replicate n a (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil)))) (SAWCorePrelude.zipWith a a a (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)) n) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil))) (SAWCorePrelude.zipWith a a a (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))) n) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.zipWith a a a (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))) n) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.map a a (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) n) (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n a) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => SAWCorePrelude.replicate n a (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) i)) SAWCoreScaffolding.RecordNil))))). - -Definition PRingStream : forall (a : Type), forall (_1 : PRing a), PRing (SAWCorePrelude.Stream a) := - fun (a : Type) (pa : PRing a) => @SAWCoreScaffolding.RecordCons "ringZero"%string (SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil))))) (SAWCorePrelude.streamConst a (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil)))) (SAWCorePrelude.streamMap2 a a a (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil))) (SAWCorePrelude.streamMap2 a a a (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCorePrelude.Stream a), forall (_2 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.streamMap2 a a a (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCorePrelude.Stream a), SAWCorePrelude.Stream a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.streamMap a a (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))))) (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCorePrelude.Stream a) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => SAWCorePrelude.streamConst a (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) i)) SAWCoreScaffolding.RecordNil))))). - -Definition PRingSeq : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PRing a), PRing (seq n a) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PRing a), PRing (seq n1 a)) (fun (n1 : Init.Datatypes.nat) => PRingVec n1) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => PRingStream a) n. - -Definition PRingWord : forall (n : Init.Datatypes.nat), PRing (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "ringZero"%string (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))))) (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)))) (SAWCoreVectorsAsRocqVectors.bvAdd n) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (SAWCoreVectorsAsRocqVectors.bvSub n) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (SAWCoreVectorsAsRocqVectors.bvMul n) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (SAWCoreVectorsAsRocqVectors.bvNeg n) (@SAWCoreScaffolding.RecordCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (SAWCoreVectorsAsRocqVectors.intToBv n) SAWCoreScaffolding.RecordNil))))). - -Definition PRingSeqBool : forall (n : Num), PRing (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PRing (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => PRingWord n1) (SAWCoreScaffolding.error (PRing (SAWCorePrelude.Stream Init.Datatypes.bool)) "PRingSeqBool: no instance for streams"%string) n. - -Definition PRingFun : forall (a : Type), forall (b : Type), forall (_1 : PRing b), PRing (forall (_2 : a), b) := - fun (a : Type) (b : Type) (pb : PRing b) => @SAWCoreScaffolding.RecordCons "ringZero"%string (PZero (forall (_1 : a), b)) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), forall (_1 : a), b) SAWCoreScaffolding.RecordTypeNil))))) (PZeroFun a b (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), forall (_1 : a), b) SAWCoreScaffolding.RecordTypeNil)))) (funBinary a b (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), forall (_1 : a), b) SAWCoreScaffolding.RecordTypeNil))) (funBinary a b (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)))) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : forall (_1 : a), b), forall (_2 : forall (_2 : a), b), forall (_3 : a), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), forall (_1 : a), b) SAWCoreScaffolding.RecordTypeNil)) (funBinary a b (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))))) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : forall (_1 : a), b), forall (_2 : a), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), forall (_1 : a), b) SAWCoreScaffolding.RecordTypeNil) (compose a b b (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)))))) (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), forall (_1 : a), b) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) (_1 : a) => @SAWCoreScaffolding.recordHead "int"%string (forall (_2 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_2 : b), forall (_3 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))))) i) SAWCoreScaffolding.RecordNil))))). - -Definition PRingUnit : PRing SAWCoreScaffolding.UnitType := - @SAWCoreScaffolding.RecordCons "ringZero"%string SAWCoreScaffolding.UnitType (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil))))) SAWCoreScaffolding.Unit (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil)))) unitBinary (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil))) unitBinary (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil)) unitBinary (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.UnitType), SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil) unitUnary (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.UnitType) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => SAWCoreScaffolding.Unit) SAWCoreScaffolding.RecordNil))))). - -Definition PRingPair : forall (a : Type), forall (b : Type), forall (_1 : PRing a), forall (_2 : PRing b), PRing (SAWCoreScaffolding.PairType a b) := - fun (a : Type) (b : Type) (pa : PRing a) (pb : PRing b) => @SAWCoreScaffolding.RecordCons "ringZero"%string (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil))))) (SAWCoreScaffolding.PairValue a b (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa) (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil)))) (pairBinary a b (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)) (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil))) (pairBinary a b (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))) (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)))) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.PairType a b), forall (_2 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil)) (pairBinary a b (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))) (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))))) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.PairType a b), SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil) (pairUnary a b (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)))))) (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.PairType a b) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => SAWCoreScaffolding.PairValue a b (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) i) (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))))) i)) SAWCoreScaffolding.RecordNil))))). - -Definition PRingEmpty : PRing SAWCoreScaffolding.RecordTypeNil := - @SAWCoreScaffolding.RecordCons "ringZero"%string SAWCoreScaffolding.RecordTypeNil (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil))))) SAWCoreScaffolding.RecordNil (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil)))) emptyBinary (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil))) emptyBinary (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), forall (_2 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil)) emptyBinary (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeNil), SAWCoreScaffolding.RecordTypeNil) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil) emptyUnary (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => SAWCoreScaffolding.RecordNil) SAWCoreScaffolding.RecordNil))))). - -Definition PRingRecord : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (_1 : PRing a), forall (_2 : PRing b), PRing (SAWCoreScaffolding.RecordTypeCons s a b) := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (pa : PRing a) (pb : PRing b) => @SAWCoreScaffolding.RecordCons "ringZero"%string (SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil))))) (@SAWCoreScaffolding.RecordCons s a b (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa) (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)) (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil)))) (recordBinary s a b (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)) (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil))) (recordBinary s a b (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))) (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)))) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), forall (_2 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil)) (recordBinary s a b (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))) (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))))) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1 : SAWCoreScaffolding.RecordTypeCons s a b), SAWCoreScaffolding.RecordTypeCons s a b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil) (recordUnary s a b (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) (@SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb)))))) (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.RecordTypeCons s a b) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => @SAWCoreScaffolding.RecordCons s a b (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) i) (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : b), forall (_2 : b), b) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : b), b) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), b) SAWCoreScaffolding.RecordTypeNil))))) pb))))) i)) SAWCoreScaffolding.RecordNil))))). - -Definition PIntegral : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))). - -Definition PIntegralInteger : PIntegral SAWCoreScaffolding.Integer := - @SAWCoreScaffolding.RecordCons "integralRing"%string (PRing SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (i : SAWCoreScaffolding.Integer), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) PRingInteger (@SAWCoreScaffolding.RecordCons "div"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (i : SAWCoreScaffolding.Integer), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil))) SAWCoreScaffolding.intDiv (@SAWCoreScaffolding.RecordCons "mod"%string (forall (_1 : SAWCoreScaffolding.Integer), forall (_2 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (i : SAWCoreScaffolding.Integer), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)) SAWCoreScaffolding.intMod (@SAWCoreScaffolding.RecordCons "toInt"%string (forall (i : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (i : SAWCoreScaffolding.Integer), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil) (fun (i : SAWCoreScaffolding.Integer) => i) (@SAWCoreScaffolding.RecordCons "posneg"%string (forall (i : SAWCoreScaffolding.Integer), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => if SAWCoreScaffolding.intLe (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero) i then @Init.Datatypes.inl Init.Datatypes.nat Init.Datatypes.nat (SAWCoreScaffolding.intToNat i) else @Init.Datatypes.inr Init.Datatypes.nat Init.Datatypes.nat (SAWCoreScaffolding.intToNat (SAWCoreScaffolding.intNeg i))) SAWCoreScaffolding.RecordNil)))). - -Definition posNegCases : forall (a : Type), forall (_1 : PIntegral a), forall (r : Type), forall (_2 : forall (_2 : Init.Datatypes.nat), r), forall (_3 : forall (_3 : Init.Datatypes.nat), r), forall (_4 : a), r := - fun (a : Type) (p : PIntegral a) (r : Type) (pos : forall (_1 : Init.Datatypes.nat), r) (neg : forall (_1 : Init.Datatypes.nat), r) (x : a) => SAWCorePrelude.either Init.Datatypes.nat Init.Datatypes.nat r pos neg (@SAWCoreScaffolding.recordHead "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) p)))) x). - -Definition PIntegralWord : forall (n : Init.Datatypes.nat), PIntegral (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := - fun (n : Init.Datatypes.nat) => @SAWCoreScaffolding.RecordCons "integralRing"%string (PRing (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) (PRingWord n) (@SAWCoreScaffolding.RecordCons "div"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil))) (SAWCoreVectorsAsRocqVectors.bvUDiv n) (@SAWCoreScaffolding.RecordCons "mod"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)) (SAWCoreVectorsAsRocqVectors.bvURem n) (@SAWCoreScaffolding.RecordCons "toInt"%string (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil) (SAWCoreVectorsAsRocqVectors.bvToInt n) (@SAWCoreScaffolding.RecordCons "posneg"%string (forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil (fun (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => @Init.Datatypes.inl Init.Datatypes.nat Init.Datatypes.nat (SAWCoreVectorsAsRocqVectors.bvToNat n x)) SAWCoreScaffolding.RecordNil)))). - -Definition PIntegralSeqBool : forall (n : Num), PIntegral (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PIntegral (seq n1 Init.Datatypes.bool)) (fun (n1 : Init.Datatypes.nat) => PIntegralWord n1) (SAWCoreScaffolding.error (PIntegral (SAWCorePrelude.Stream Init.Datatypes.bool)) "PIntegralSeqBool: no instance for streams"%string) n. - -Definition PField : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "fieldRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : a), forall (_2 : a), a) SAWCoreScaffolding.RecordTypeNil)). - -Definition PFieldRational : PField SAWCoreScaffolding.Rational := - @SAWCoreScaffolding.RecordCons "fieldRing"%string (PRing SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil)) PRingRational (@SAWCoreScaffolding.RecordCons "recip"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.rationalRecip (@SAWCoreScaffolding.RecordCons "fieldDiv"%string (forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil SAWCorePrelude.rationalDiv SAWCoreScaffolding.RecordNil)). - -Definition PFieldIntMod : forall (n : Init.Datatypes.nat), PField (SAWCoreScaffolding.IntMod n) := - fun (n : Init.Datatypes.nat) => let var__0 := SAWCoreScaffolding.IntMod n in - @SAWCoreScaffolding.RecordCons "fieldRing"%string (PRing var__0) (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (x : var__0), forall (y : var__0), var__0) SAWCoreScaffolding.RecordTypeNil)) (PRingIntMod n) (@SAWCoreScaffolding.RecordCons "recip"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (x : var__0), forall (y : var__0), var__0) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: recip IntMod"%string) (@SAWCoreScaffolding.RecordCons "fieldDiv"%string (forall (x : var__0), forall (y : var__0), var__0) SAWCoreScaffolding.RecordTypeNil (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: (/.) IntMod"%string) SAWCoreScaffolding.RecordNil)). - -Definition PFieldIntModNum : forall (n : Num), PField (IntModNum n) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PField (IntModNum n1)) PFieldIntMod (SAWCoreScaffolding.error (PField (IntModNum TCInf)) "PFieldIntModNum: no instance for inf"%string) n. - -Definition PRound : forall (_1 : Type), Type := - fun (a : Type) => SAWCoreScaffolding.RecordTypeCons "roundField"%string (PField a) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))). - -Definition PRoundRational : PRound SAWCoreScaffolding.Rational := - @SAWCoreScaffolding.RecordCons "roundField"%string (PField SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) PFieldRational (@SAWCoreScaffolding.RecordCons "roundCmp"%string (PCmp SAWCoreScaffolding.Rational) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) PCmpRational (@SAWCoreScaffolding.RecordCons "floor"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) SAWCoreScaffolding.rationalFloor (@SAWCoreScaffolding.RecordCons "ceiling"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) SAWCorePrelude.rationalCeiling (@SAWCoreScaffolding.RecordCons "trunc"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)) SAWCorePrelude.rationalTrunc (@SAWCoreScaffolding.RecordCons "roundAway"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil) SAWCorePrelude.rationalRoundAway (@SAWCoreScaffolding.RecordCons "roundToEven"%string (forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil SAWCorePrelude.rationalRoundToEven SAWCoreScaffolding.RecordNil)))))). - -Definition PLiteral : forall (a : Type), Type := - fun (a : Type) => forall (_1 : Init.Datatypes.nat), a. - -Definition PLiteralLessThan : forall (a : Type), Type := - fun (a : Type) => forall (_1 : Init.Datatypes.nat), a. - -Definition PLiteralSeqBool : forall (n : Num), PLiteral (seq n Init.Datatypes.bool) := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => PLiteral (seq n1 Init.Datatypes.bool)) SAWCoreVectorsAsRocqVectors.bvNat (SAWCoreScaffolding.error (PLiteral (SAWCorePrelude.Stream Init.Datatypes.bool)) "PLiteralSeqBool: no instance for streams"%string) n. - -Definition PLiteralBit : PLiteral Init.Datatypes.bool := - SAWCoreScaffolding.ltNat SAWCoreScaffolding.Zero. - -Definition PLiteralInteger : PLiteral SAWCoreScaffolding.Integer := - SAWCoreScaffolding.natToInt. - -Definition PLiteralIntMod : forall (n : Init.Datatypes.nat), PLiteral (SAWCoreScaffolding.IntMod n) := - fun (n : Init.Datatypes.nat) (x : Init.Datatypes.nat) => SAWCoreScaffolding.toIntMod n (SAWCoreScaffolding.natToInt x). - -Definition PLiteralIntModNum : forall (num : Num), PLiteral (IntModNum num) := - fun (num : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n : Num) => PLiteral (IntModNum n)) PLiteralIntMod PLiteralInteger num. - -Definition PLiteralRational : PLiteral SAWCoreScaffolding.Rational := - fun (x : Init.Datatypes.nat) => SAWCorePrelude.integerToRational (SAWCoreScaffolding.natToInt x). - -Definition PFLiteral : forall (a : Type), Type := - fun (a : Type) => forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), forall (_3 : Init.Datatypes.nat), a. - -Definition PFLiteralRational : PFLiteral SAWCoreScaffolding.Rational := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (r : Init.Datatypes.nat) => SAWCoreScaffolding.ratio (SAWCoreScaffolding.natToInt m) (SAWCoreScaffolding.natToInt n). - -Definition ecNumber : forall (val : Num), forall (a : Type), forall (_1 : PLiteral a), a := - fun (val : Num) (a : Type) (pa : PLiteral a) => @CryptolPrimitivesForSAWCore.Num_rect (fun (_1 : Num) => a) pa (pa SAWCoreScaffolding.Zero) val. - -Definition ecFromZ : forall (n : Num), forall (_1 : IntModNum n), SAWCoreScaffolding.Integer := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : IntModNum n1), SAWCoreScaffolding.Integer) SAWCoreScaffolding.fromIntMod (fun (x : SAWCoreScaffolding.Integer) => x) n. - -Definition ecFromInteger : forall (a : Type), forall (_1 : PRing a), forall (_2 : SAWCoreScaffolding.Integer), a := - fun (a : Type) (pa : PRing a) => @SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))). - -Definition ecPlus : forall (a : Type), forall (_1 : PRing a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pa : PRing a) => @SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa). - -Definition ecMinus : forall (a : Type), forall (_1 : PRing a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pa : PRing a) => @SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)). - -Definition ecMul : forall (a : Type), forall (_1 : PRing a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pa : PRing a) => @SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))). - -Definition ecNeg : forall (a : Type), forall (_1 : PRing a), forall (_2 : a), a := - fun (a : Type) (pa : PRing a) => @SAWCoreScaffolding.recordHead "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))). - -Definition ecToInteger : forall (a : Type), forall (_1 : PIntegral a), forall (_2 : a), SAWCoreScaffolding.Integer := - fun (a : Type) (pa : PIntegral a) => @SAWCoreScaffolding.recordHead "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) pa))). - -Definition ecDiv : forall (a : Type), forall (_1 : PIntegral a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pi : PIntegral a) => @SAWCoreScaffolding.recordHead "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) pi). - -Definition ecMod : forall (a : Type), forall (_1 : PIntegral a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pi : PIntegral a) => @SAWCoreScaffolding.recordHead "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) pi)). - -Definition ecExp : forall (a : Type), forall (b : Type), forall (_1 : PRing a), forall (_2 : PIntegral b), forall (_3 : a), forall (_4 : b), a := - fun (a : Type) (b : Type) (pa : PRing a) (pi : PIntegral b) (x : a) => posNegCases b pi a (SAWCorePrelude.expByNat a (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa)))) x) (fun (_1 : Init.Datatypes.nat) => @SAWCoreScaffolding.recordHead "int"%string (forall (_2 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_2 : a), forall (_3 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_2 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) pa))))) (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))). - -Definition ecRecip : forall (a : Type), forall (_1 : PField a), forall (_2 : a), a := - fun (a : Type) (pf : PField a) => @SAWCoreScaffolding.recordHead "recip"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : a), forall (_2 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "fieldRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : a), forall (_2 : a), a) SAWCoreScaffolding.RecordTypeNil)) pf). - -Definition ecFieldDiv : forall (a : Type), forall (_1 : PField a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pf : PField a) => @SAWCoreScaffolding.recordHead "fieldDiv"%string (forall (_1 : a), forall (_2 : a), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "recip"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : a), forall (_2 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "fieldRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (_1 : a), forall (_2 : a), a) SAWCoreScaffolding.RecordTypeNil)) pf)). - -Definition ecCeiling : forall (a : Type), forall (_1 : PRound a), forall (_2 : a), SAWCoreScaffolding.Integer := - fun (a : Type) (pr : PRound a) => @SAWCoreScaffolding.recordHead "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) pr))). - -Definition ecFloor : forall (a : Type), forall (_1 : PRound a), forall (_2 : a), SAWCoreScaffolding.Integer := - fun (a : Type) (pr : PRound a) => @SAWCoreScaffolding.recordHead "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) pr)). - -Definition ecTruncate : forall (a : Type), forall (_1 : PRound a), forall (_2 : a), SAWCoreScaffolding.Integer := - fun (a : Type) (pr : PRound a) => @SAWCoreScaffolding.recordHead "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) pr)))). - -Definition ecRoundAway : forall (a : Type), forall (_1 : PRound a), forall (_2 : a), SAWCoreScaffolding.Integer := - fun (a : Type) (pr : PRound a) => @SAWCoreScaffolding.recordHead "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) pr))))). - -Definition ecRoundToEven : forall (a : Type), forall (_1 : PRound a), forall (_2 : a), SAWCoreScaffolding.Integer := - fun (a : Type) (pr : PRound a) => @SAWCoreScaffolding.recordHead "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (_1 : a), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) pr)))))). - -Definition ecLg2 : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), seq n Init.Datatypes.bool := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 Init.Datatypes.bool), seq n1 Init.Datatypes.bool) SAWCoreVectorsAsRocqVectors.bvLg2 (SAWCoreScaffolding.error (forall (_1 : SAWCorePrelude.Stream Init.Datatypes.bool), SAWCorePrelude.Stream Init.Datatypes.bool) "ecLg2: expected finite word"%string) n. - -Definition ecSDiv : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), seq n Init.Datatypes.bool := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 Init.Datatypes.bool), forall (_2 : seq n1 Init.Datatypes.bool), seq n1 Init.Datatypes.bool) (SAWCoreScaffolding.Nat__rec (fun (n1 : Init.Datatypes.nat) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool) (SAWCoreScaffolding.error (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool) "ecSDiv: illegal 0-width word"%string) (fun (n' : Init.Datatypes.nat) (_1 : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.bvSDiv n')) (SAWCoreScaffolding.error (forall (_1 : SAWCorePrelude.Stream Init.Datatypes.bool), forall (_2 : SAWCorePrelude.Stream Init.Datatypes.bool), SAWCorePrelude.Stream Init.Datatypes.bool) "ecSDiv: expected finite word"%string) n. - -Definition ecSMod : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), seq n Init.Datatypes.bool := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 Init.Datatypes.bool), forall (_2 : seq n1 Init.Datatypes.bool), seq n1 Init.Datatypes.bool) (SAWCoreScaffolding.Nat__rec (fun (n1 : Init.Datatypes.nat) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool) (SAWCoreScaffolding.error (forall (_1 : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool) "ecSMod: illegal 0-width word"%string) (fun (n' : Init.Datatypes.nat) (_1 : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.bvSRem n')) (SAWCoreScaffolding.error (forall (_1 : SAWCorePrelude.Stream Init.Datatypes.bool), forall (_2 : SAWCorePrelude.Stream Init.Datatypes.bool), SAWCorePrelude.Stream Init.Datatypes.bool) "ecSMod: expected finite word"%string) n. - -Definition toSignedInteger : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), SAWCoreScaffolding.Integer := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 Init.Datatypes.bool), SAWCoreScaffolding.Integer) SAWCoreVectorsAsRocqVectors.sbvToInt (SAWCoreScaffolding.error (forall (_1 : SAWCorePrelude.Stream Init.Datatypes.bool), SAWCoreScaffolding.Integer) "toSignedInteger: expected finite word"%string) n. - -Definition ecEq : forall (a : Type), forall (_1 : PEq a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PEq a) => @SAWCoreScaffolding.recordHead "eq"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa. - -Definition ecNotEq : forall (a : Type), forall (_1 : PEq a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PEq a) (x : a) (y : a) => Init.Datatypes.negb (ecEq a pa x y). - -Definition ecLt : forall (a : Type), forall (_1 : PCmp a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PCmp a) => @SAWCoreScaffolding.recordHead "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa))). - -Definition ecGt : forall (a : Type), forall (_1 : PCmp a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PCmp a) (x : a) (y : a) => ecLt a pa y x. - -Definition ecLtEq : forall (a : Type), forall (_1 : PCmp a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PCmp a) => @SAWCoreScaffolding.recordHead "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa)). - -Definition ecGtEq : forall (a : Type), forall (_1 : PCmp a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PCmp a) (x : a) (y : a) => ecLtEq a pa y x. - -Definition ecSLt : forall (a : Type), forall (_1 : PSignedCmp a), forall (_2 : a), forall (_3 : a), Init.Datatypes.bool := - fun (a : Type) (pa : PSignedCmp a) => @SAWCoreScaffolding.recordHead "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 : a), forall (_2 : a), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) pa))). - -Definition ecAnd : forall (a : Type), forall (_1 : PLogic a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pa : PLogic a) => @SAWCoreScaffolding.recordHead "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa). - -Definition ecOr : forall (a : Type), forall (_1 : PLogic a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pa : PLogic a) => @SAWCoreScaffolding.recordHead "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)). - -Definition ecXor : forall (a : Type), forall (_1 : PLogic a), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (pa : PLogic a) => @SAWCoreScaffolding.recordHead "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa))). - -Definition ecCompl : forall (a : Type), forall (_1 : PLogic a), forall (_2 : a), a := - fun (a : Type) (pa : PLogic a) => @SAWCoreScaffolding.recordHead "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1 : a), a) SAWCoreScaffolding.RecordTypeNil)))) pa)))). - -Definition ecZero : forall (a : Type), forall (_1 : PZero a), a := - fun (a : Type) (pa : PZero a) => pa. - -Definition ecFraction : forall (m : Num), forall (n : Num), forall (r : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PFLiteral a), a := - fun (m : Num) (n : Num) (r : Num) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PFLiteral a) => @CryptolPrimitivesForSAWCore.Num_rect (fun (_1 : Num) => a) (fun (m1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (_1 : Num) => a) (fun (n1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (_1 : Num) => a) (fun (r1 : Init.Datatypes.nat) => pa m1 n1 r1) (SAWCoreScaffolding.error a "ecFraction: r should not be infinite"%string) r) (SAWCoreScaffolding.error a "ecFraction: n should not be infinite"%string) n) (SAWCoreScaffolding.error a "ecFraction: m should not be infinite"%string) m. - -Definition ecShiftL : forall (m : Num), forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : PZero a), forall (_3 : seq m a), forall (_4 : ix), seq m a := - fun (m : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : PZero a), forall (_3 : seq m1 a), forall (_4 : ix), seq m1 a) (fun (m1 : Init.Datatypes.nat) (ix : Type) (a : Type) (pix : PIntegral ix) (pz : PZero a) (xs : SAWCoreVectorsAsRocqVectors.Vec m1 a) => let var__0 := ecZero a pz in - posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m1 a) (SAWCoreVectorsAsRocqVectors.shiftL m1 a var__0 xs) (SAWCoreVectorsAsRocqVectors.shiftR m1 a var__0 xs)) (fun (ix : Type) (a : Type) (pix : PIntegral ix) (pz : PZero a) (xs : SAWCorePrelude.Stream a) => posNegCases ix pix (SAWCorePrelude.Stream a) (SAWCorePrelude.streamShiftL a xs) (SAWCorePrelude.streamShiftR a pz xs)) m. - -Definition ecShiftR : forall (m : Num), forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : PZero a), forall (_3 : seq m a), forall (_4 : ix), seq m a := - fun (m : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : PZero a), forall (_3 : seq m1 a), forall (_4 : ix), seq m1 a) (fun (m1 : Init.Datatypes.nat) (ix : Type) (a : Type) (pix : PIntegral ix) (pz : PZero a) (xs : SAWCoreVectorsAsRocqVectors.Vec m1 a) => let var__0 := ecZero a pz in - posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m1 a) (SAWCoreVectorsAsRocqVectors.shiftR m1 a var__0 xs) (SAWCoreVectorsAsRocqVectors.shiftL m1 a var__0 xs)) (fun (ix : Type) (a : Type) (pix : PIntegral ix) (pz : PZero a) (xs : SAWCorePrelude.Stream a) => posNegCases ix pix (SAWCorePrelude.Stream a) (SAWCorePrelude.streamShiftR a pz xs) (SAWCorePrelude.streamShiftL a xs)) m. - -Definition ecSShiftR : forall (n : Num), forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : ix), seq n Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : ix), seq n Init.Datatypes.bool) (fun (n : Init.Datatypes.nat) (ix : Type) (pix : PIntegral ix) => SAWCorePrelude.natCase (fun (w : Init.Datatypes.nat) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_2 : ix), SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (fun (xs : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool) (_1 : ix) => xs) (fun (w : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ w) Init.Datatypes.bool) => let var__0 := SAWCoreScaffolding.Succ w in - posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec var__0 Init.Datatypes.bool) (SAWCoreVectorsAsRocqVectors.bvSShr w xs) (SAWCoreVectorsAsRocqVectors.bvShl var__0 xs)) n). - -Definition ecRotL : forall (m : Num), forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : seq m a), forall (_3 : ix), seq m a := - finNumRec (fun (m : Num) => forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : seq m a), forall (_3 : ix), seq m a) (fun (m : Init.Datatypes.nat) (ix : Type) (a : Type) (pix : PIntegral ix) (xs : SAWCoreVectorsAsRocqVectors.Vec m a) => posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m a) (SAWCoreVectorsAsRocqVectors.rotateL m a xs) (SAWCoreVectorsAsRocqVectors.rotateR m a xs)). - -Definition ecRotR : forall (m : Num), forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : seq m a), forall (_3 : ix), seq m a := - finNumRec (fun (m : Num) => forall (ix : Type), forall (a : Type), forall (_1 : PIntegral ix), forall (_2 : seq m a), forall (_3 : ix), seq m a) (fun (m : Init.Datatypes.nat) (ix : Type) (a : Type) (pix : PIntegral ix) (xs : SAWCoreVectorsAsRocqVectors.Vec m a) => posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m a) (SAWCoreVectorsAsRocqVectors.rotateR m a xs) (SAWCoreVectorsAsRocqVectors.rotateL m a xs)). - -Definition ecCat : forall (m : Num), forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq m a), forall (_2 : seq n a), seq (tcAdd m n) a := - finNumRec (fun (m : Num) => forall (n : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq m a), forall (_2 : seq n a), seq (tcAdd m n) a) (fun (m : Init.Datatypes.nat) => CryptolPrimitivesForSAWCore.Num__rec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m a), forall (_2 : seq n a), seq (tcAdd (TCNum m) n) a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => SAWCorePrelude.append m n a) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => SAWCorePrelude.streamAppend a m)). - -Definition ecTake : forall (m : Num), forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq (tcAdd m n) a), seq m a := - CryptolPrimitivesForSAWCore.Num__rec (fun (m : Num) => forall (n : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcAdd m n) a), seq m a) (fun (m : Init.Datatypes.nat) => CryptolPrimitivesForSAWCore.Num__rec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcAdd (TCNum m) n) a), SAWCoreVectorsAsRocqVectors.Vec m a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a) => SAWCorePrelude.take a m n xs) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCorePrelude.Stream a) => SAWCorePrelude.streamTake a m xs)) (CryptolPrimitivesForSAWCore.Num__rec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcAdd TCInf n) a), SAWCorePrelude.Stream a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCorePrelude.Stream a) => xs) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCorePrelude.Stream a) => xs)). - -Definition ecDrop : forall (m : Num), forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq (tcAdd m n) a), seq n a := - finNumRec (fun (m : Num) => forall (n : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcAdd m n) a), seq n a) (fun (m : Init.Datatypes.nat) => CryptolPrimitivesForSAWCore.Num__rec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcAdd (TCNum m) n) a), seq n a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a) => SAWCorePrelude.drop a m n xs) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCorePrelude.Stream a) => SAWCorePrelude.streamDrop a m xs)). - -Definition ecJoin : forall (m : Num), forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq m (seq n a)), seq (tcMul m n) a := - fun (m : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (n : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq m1 (seq n a)), seq (tcMul m1 n) a) (fun (m1 : Init.Datatypes.nat) => finNumRec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m1 (seq n a)), seq (tcMul (TCNum m1) n) a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => SAWCorePrelude.join m1 n a)) (finNumRec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : SAWCorePrelude.Stream (seq n a)), seq (tcMul TCInf n) a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => SAWCorePrelude.natCase (fun (n' : Init.Datatypes.nat) => forall (_1 : SAWCorePrelude.Stream (SAWCoreVectorsAsRocqVectors.Vec n' a)), seq (SAWCoreScaffolding.if0Nat Num n' (TCNum SAWCoreScaffolding.Zero) TCInf) a) (fun (s : SAWCorePrelude.Stream (SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero a)) => SAWCoreVectorsAsRocqVectors.EmptyVec a) (fun (n' : Init.Datatypes.nat) (s : SAWCorePrelude.Stream (SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n') a)) => SAWCorePrelude.streamJoin a n' s) n)) m. - -Definition ecSplit : forall (m : Num), forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq (tcMul m n) a), seq m (seq n a) := - fun (m : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (n : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcMul m1 n) a), seq m1 (seq n a)) (fun (m1 : Init.Datatypes.nat) => finNumRec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcMul (TCNum m1) n) a), SAWCoreVectorsAsRocqVectors.Vec m1 (seq n a)) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => SAWCorePrelude.split m1 n a)) (finNumRec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq (tcMul TCInf n) a), SAWCorePrelude.Stream (seq n a)) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => SAWCorePrelude.natCase (fun (n' : Init.Datatypes.nat) => forall (_1 : seq (SAWCoreScaffolding.if0Nat Num n' (TCNum SAWCoreScaffolding.Zero) TCInf) a), SAWCorePrelude.Stream (SAWCoreVectorsAsRocqVectors.Vec n' a)) (SAWCorePrelude.streamConst (SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero a)) (fun (n' : Init.Datatypes.nat) => SAWCorePrelude.streamSplit a (SAWCoreScaffolding.Succ n')) n)) m. - -Definition ecReverse : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq n a), seq n a := - finNumRec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : seq n a), seq n a) SAWCorePrelude.reverse. - -Definition ecTranspose : forall (m : Num), forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : seq m (seq n a)), seq n (seq m a) := - fun (m : Num) (n : Num) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => @CryptolPrimitivesForSAWCore.Num_rect (fun (m1 : Num) => forall (_1 : seq m1 (seq n a)), seq n (seq m1 a)) (fun (m1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m1 (seq n1 a)), seq n1 (SAWCoreVectorsAsRocqVectors.Vec m1 a)) (fun (n1 : Init.Datatypes.nat) => SAWCorePrelude.transpose m1 n1 a) (fun (xss : SAWCoreVectorsAsRocqVectors.Vec m1 (SAWCorePrelude.Stream a)) => SAWCorePrelude.MkStream (SAWCoreVectorsAsRocqVectors.Vec m1 a) (fun (i : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.gen m1 a (fun (j : Init.Datatypes.nat) => SAWCorePrelude.streamGet a (SAWCorePrelude.sawAt m1 (SAWCorePrelude.Stream a) xss j) i))) n) (@CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : SAWCorePrelude.Stream (seq n1 a)), seq n1 (SAWCorePrelude.Stream a)) (fun (n1 : Init.Datatypes.nat) (xss : SAWCorePrelude.Stream (SAWCoreVectorsAsRocqVectors.Vec n1 a)) => SAWCoreVectorsAsRocqVectors.gen n1 (SAWCorePrelude.Stream a) (fun (i : Init.Datatypes.nat) => SAWCorePrelude.MkStream a (fun (j : Init.Datatypes.nat) => SAWCorePrelude.sawAt n1 a (SAWCorePrelude.streamGet (SAWCoreVectorsAsRocqVectors.Vec n1 a) xss j) i))) (fun (xss : SAWCorePrelude.Stream (SAWCorePrelude.Stream a)) => SAWCorePrelude.MkStream (SAWCorePrelude.Stream a) (fun (i : Init.Datatypes.nat) => SAWCorePrelude.MkStream a (fun (j : Init.Datatypes.nat) => SAWCorePrelude.streamGet a (SAWCorePrelude.streamGet (SAWCorePrelude.Stream a) xss j) i))) n) m. - -Definition ecAt : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n a), forall (_3 : ix), a := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n1 a), forall (_3 : ix), a) (fun (n1 : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (ix : Type) (pix : PIntegral ix) (xs : SAWCoreVectorsAsRocqVectors.Vec n1 a) => posNegCases ix pix a (SAWCorePrelude.sawAt n1 a xs) (fun (_1 : Init.Datatypes.nat) => SAWCorePrelude.sawAt n1 a xs SAWCoreScaffolding.Zero)) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (ix : Type) (pix : PIntegral ix) (xs : SAWCorePrelude.Stream a) => posNegCases ix pix a (SAWCorePrelude.streamGet a xs) (fun (_1 : Init.Datatypes.nat) => SAWCorePrelude.streamGet a xs SAWCoreScaffolding.Zero)) n. - -Definition ecAtBack : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n a), forall (_3 : ix), a := - fun (n : Num) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (ix : Type) (pix : PIntegral ix) (xs : seq n a) => ecAt n a ix pix (ecReverse n a xs). - -Definition ecFromTo : forall (first : Num), forall (last : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcSub last first)) a := - finNumRec (fun (first : Num) => forall (last : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcSub last first)) a) (fun (first : Init.Datatypes.nat) => finNumRec (fun (last : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcSub last (TCNum first))) a) (fun (last : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLiteral a) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) (SAWCoreScaffolding.subNat last first)) a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.addNat i first)))). - -Definition ecFromToLessThan : forall (first : Num), forall (bound : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLiteralLessThan a), seq (tcSub bound first) a := - fun (first : Num) (bound : Num) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => finNumRec (fun (first1 : Num) => forall (_1 : PLiteralLessThan a), seq (tcSub bound first1) a) (fun (first1 : Init.Datatypes.nat) => @CryptolPrimitivesForSAWCore.Num_rect (fun (bound1 : Num) => forall (_1 : PLiteralLessThan a), seq (tcSub bound1 (TCNum first1)) a) (fun (bound1 : Init.Datatypes.nat) (pa : PLiteralLessThan a) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.subNat bound1 first1) a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.addNat i first1))) (fun (pa : PLiteralLessThan a) => SAWCorePrelude.MkStream a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.addNat i first1))) bound) first. - -Definition ecFromThenTo : forall (first : Num), forall (next : Num), forall (last : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (len : Num), forall (_1 : PLiteral a), forall (_2 : PLiteral a), forall (_3 : PLiteral a), seq len a := - fun (first : Num) (next : Num) (_1 : Num) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => finNumRec (fun (len : Num) => forall (_2 : PLiteral a), forall (_3 : PLiteral a), forall (_4 : PLiteral a), seq len a) (fun (len : Init.Datatypes.nat) (pa : PLiteral a) (_2 : PLiteral a) (_3 : PLiteral a) => SAWCoreVectorsAsRocqVectors.gen len a (fun (i : Init.Datatypes.nat) => let var__0 := getFinNat first in - pa (SAWCoreScaffolding.subNat (SAWCoreScaffolding.addNat var__0 (SAWCoreScaffolding.mulNat i (getFinNat next))) (SAWCoreScaffolding.mulNat i var__0)))). - -Definition ecFromToBy : forall (first : Num), forall (last : Num), forall (stride : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (tcSub last first) stride)) a := - finNumRec (fun (first : Num) => forall (last : Num), forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (tcSub last first) stride)) a) (fun (first : Init.Datatypes.nat) => finNumRec (fun (last : Num) => forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (tcSub last (TCNum first)) stride)) a) (fun (last : Init.Datatypes.nat) => finNumRec (fun (stride : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (TCNum (SAWCoreScaffolding.subNat last first)) stride)) a) (fun (stride : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLiteral a) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) (SAWCorePrelude.divNat (SAWCoreScaffolding.subNat last first) stride)) a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.addNat first (SAWCoreScaffolding.mulNat i stride)))))). - -Definition ecFromToByLessThan : forall (first : Num), forall (bound : Num), forall (stride : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLiteralLessThan a), seq (tcCeilDiv (tcSub bound first) stride) a := - finNumRec (fun (first : Num) => forall (bound : Num), forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteralLessThan a), seq (tcCeilDiv (tcSub bound first) stride) a) (fun (first : Init.Datatypes.nat) => CryptolPrimitivesForSAWCore.Num__rec (fun (bound : Num) => forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteralLessThan a), seq (tcCeilDiv (tcSub bound (TCNum first)) stride) a) (fun (bound : Init.Datatypes.nat) => finNumRec (fun (stride : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteralLessThan a), seq (tcCeilDiv (TCNum (SAWCoreScaffolding.subNat bound first)) stride) a) (fun (stride : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLiteralLessThan a) => SAWCoreVectorsAsRocqVectors.gen (ceilDivNat (SAWCoreScaffolding.subNat bound first) stride) a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.addNat first (SAWCoreScaffolding.mulNat i stride))))) (finNumRec (fun (stride : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteralLessThan a), seq (tcCeilDiv TCInf stride) a) (fun (stride : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLiteralLessThan a) => SAWCorePrelude.MkStream a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.addNat first (SAWCoreScaffolding.mulNat i stride)))))). - -Definition ecFromToDownBy : forall (first : Num), forall (last : Num), forall (stride : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (tcSub first last) stride)) a := - finNumRec (fun (first : Num) => forall (last : Num), forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (tcSub first last) stride)) a) (fun (first : Init.Datatypes.nat) => finNumRec (fun (last : Num) => forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (tcSub (TCNum first) last) stride)) a) (fun (last : Init.Datatypes.nat) => finNumRec (fun (stride : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcDiv (TCNum (SAWCoreScaffolding.subNat first last)) stride)) a) (fun (stride : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLiteral a) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) (SAWCorePrelude.divNat (SAWCoreScaffolding.subNat first last) stride)) a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.subNat first (SAWCoreScaffolding.mulNat i stride)))))). - -Definition ecFromToDownByGreaterThan : forall (first : Num), forall (bound : Num), forall (stride : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : PLiteral a), seq (tcCeilDiv (tcSub first bound) stride) a := - finNumRec (fun (first : Num) => forall (bound : Num), forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcCeilDiv (tcSub first bound) stride) a) (fun (first : Init.Datatypes.nat) => finNumRec (fun (bound : Num) => forall (stride : Num), forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcCeilDiv (tcSub (TCNum first) bound) stride) a) (fun (bound : Init.Datatypes.nat) => finNumRec (fun (stride : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (_1 : PLiteral a), seq (tcCeilDiv (TCNum (SAWCoreScaffolding.subNat first bound)) stride) a) (fun (stride : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (pa : PLiteral a) => SAWCoreVectorsAsRocqVectors.gen (ceilDivNat (SAWCoreScaffolding.subNat first bound) stride) a (fun (i : Init.Datatypes.nat) => pa (SAWCoreScaffolding.subNat first (SAWCoreScaffolding.mulNat i stride)))))). - -Definition ecInfFrom : forall (a : Type), forall (_1 : PIntegral a), forall (_2 : a), seq TCInf a := - fun (a : Type) (pa : PIntegral a) (x : a) => SAWCorePrelude.MkStream a (fun (i : Init.Datatypes.nat) => let var__0 := @SAWCoreScaffolding.recordHead "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) pa in - @SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) var__0) x (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) var__0))))) (SAWCoreScaffolding.natToInt i))). - -Definition ecInfFromThen : forall (a : Type), forall (_1 : PIntegral a), forall (_2 : a), forall (_3 : a), seq TCInf a := - fun (a : Type) (pa : PIntegral a) (x : a) (y : a) => SAWCorePrelude.MkStream a (fun (i : Init.Datatypes.nat) => let var__0 := @SAWCoreScaffolding.recordHead "integralRing"%string (PRing a) (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1 : a), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1 : a), Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) SAWCoreScaffolding.RecordTypeNil)))) pa in - @SAWCoreScaffolding.recordHead "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) var__0) x (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) var__0))) (@SAWCoreScaffolding.recordHead "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) var__0)) y x) (@SAWCoreScaffolding.recordHead "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)) (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))) (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil)))) (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 : a), forall (_2 : a), a) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1 : a), a) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (_1 : SAWCoreScaffolding.Integer), a) SAWCoreScaffolding.RecordTypeNil))))) var__0))))) (SAWCoreScaffolding.natToInt i)))). - -Definition ecError : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (len : Num), forall (_1 : seq len (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) Init.Datatypes.bool)), a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) => finNumRec (fun (len : Num) => forall (_1 : seq len (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) Init.Datatypes.bool)), a) (fun (len : Init.Datatypes.nat) (msg : SAWCoreVectorsAsRocqVectors.Vec len (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) Init.Datatypes.bool)) => SAWCoreScaffolding.error a (SAWCoreScaffolding.appendString "encountered call to the Cryptol 'error' function: "%string (SAWCorePrelude.bytesToString len msg))). - -Definition ecRandom : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) Init.Datatypes.bool), a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) Init.Datatypes.bool) => SAWCoreScaffolding.error a "Cryptol.random"%string. - -Definition ecTrace : forall (n : Num), forall (a : Type), forall (b : Type), forall (_1 : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) Init.Datatypes.bool)), forall (_2 : a), forall (_3 : b), b := - fun (n : Num) (a : Type) (b : Type) (_1 : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) Init.Datatypes.bool)) (_2 : a) (x : b) => x. - -Definition ecDeepseq : forall (a : Type), forall (b : Type), forall (_1 : PEq a), forall (_2 : a), forall (_3 : b), b := - fun (a : Type) (b : Type) (pa : PEq a) (x : a) (y : b) => y. - -Definition ecParmap : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (n : Num), forall (_1 : PEq b), forall (_2 : forall (_2 : a), b), forall (_3 : seq n a), seq n b := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (n : Num) (pb : PEq b) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : forall (_1 : a), b), forall (_2 : seq n1 a), seq n1 b) (fun (n1 : Init.Datatypes.nat) (f : forall (_1 : a), b) (xs : SAWCoreVectorsAsRocqVectors.Vec n1 a) => SAWCorePrelude.map a b f n1 xs) (fun (f : forall (_1 : a), b) (xs : SAWCorePrelude.Stream a) => SAWCoreScaffolding.error (SAWCorePrelude.Stream b) "Unexpected infinite stream in parmap"%string) n. - -Definition ecFoldl : forall (n : Num), forall (a : Type), forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (_1 : forall (_1 : a), forall (_2 : b), a), forall (_2 : a), forall (_3 : seq n b), a := - fun (n : Num) (a : Type) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (f : forall (_1 : a), forall (_2 : b), a) (z : a) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 b), a) (fun (n1 : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n1 b) => SAWCoreVectorsAsRocqVectors.foldl b a n1 f z xs) (fun (xs : SAWCorePrelude.Stream b) => SAWCoreScaffolding.error a "Unexpected infinite stream in foldl"%string) n. - -Definition ecFoldlPrime : forall (n : Num), forall (a : Type), forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (_1 : PEq a), forall (_2 : forall (_2 : a), forall (_3 : b), a), forall (_3 : a), forall (_4 : seq n b), a := - fun (n : Num) (a : Type) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (pa : PEq a) => ecFoldl n a b. - -Definition ecScanl : forall (n : Num), forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : b), a), forall (_2 : a), forall (_3 : seq n b), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) n) a := - fun (n : Num) (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : b), a) (z : a) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (_1 : seq n1 b), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) n1) a) (fun (n1 : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n1 b) => SAWCoreVectorsAsRocqVectors.scanl b a n1 f z xs) (fun (xs : SAWCorePrelude.Stream b) => SAWCorePreludeExtra.streamScanl b a f z xs) n. - -Definition TCFloat : forall (_1 : Num), forall (_2 : Num), Type := - fun (_1 : Num) (_2 : Num) => SAWCoreScaffolding.UnitType. - -Definition PEqFloat : forall (e : Num), forall (p : Num), PEq (TCFloat e p) := - fun (e : Num) (p : Num) => @SAWCoreScaffolding.RecordCons "eq"%string (forall (x : TCFloat e p), forall (y : TCFloat e p), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x : TCFloat e p) (y : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: (==) Float"%string) SAWCoreScaffolding.RecordNil. - -Definition PCmpFloat : forall (e : Num), forall (p : Num), PCmp (TCFloat e p) := - fun (e : Num) (p : Num) => let var__0 := TCFloat e p in - @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq var__0) (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (x : var__0), forall (y : var__0), forall (k : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) (PEqFloat e p) (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (x : var__0), forall (y : var__0), forall (k : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) (fun (x : var__0) (y : var__0) (k : Init.Datatypes.bool) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: Cmp Float"%string) (@SAWCoreScaffolding.RecordCons "le"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: Cmp Float"%string) (@SAWCoreScaffolding.RecordCons "lt"%string (forall (x : var__0), forall (y : var__0), Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: Cmp Float"%string) SAWCoreScaffolding.RecordNil))). - -Definition PZeroFloat : forall (e : Num), forall (p : Num), PZero (TCFloat e p) := - fun (e : Num) (p : Num) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: Zero Float"%string. - -Definition PRingFloat : forall (e : Num), forall (p : Num), PRing (TCFloat e p) := - fun (e : Num) (p : Num) => let var__0 := TCFloat e p in - @SAWCoreScaffolding.RecordCons "ringZero"%string (PZero var__0) (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), var__0) SAWCoreScaffolding.RecordTypeNil))))) (PZeroFloat e p) (@SAWCoreScaffolding.RecordCons "add"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), var__0) SAWCoreScaffolding.RecordTypeNil)))) (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: (+) Float"%string) (@SAWCoreScaffolding.RecordCons "sub"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), var__0) SAWCoreScaffolding.RecordTypeNil))) (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: (-) Float"%string) (@SAWCoreScaffolding.RecordCons "mul"%string (forall (x : var__0), forall (y : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), var__0) SAWCoreScaffolding.RecordTypeNil)) (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: (*) Float"%string) (@SAWCoreScaffolding.RecordCons "neg"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "int"%string (forall (i : SAWCoreScaffolding.Integer), var__0) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: neg Float"%string) (@SAWCoreScaffolding.RecordCons "int"%string (forall (i : SAWCoreScaffolding.Integer), var__0) SAWCoreScaffolding.RecordTypeNil (fun (i : SAWCoreScaffolding.Integer) => SAWCoreScaffolding.error var__0 "Unimplemented: toInteger Float"%string) SAWCoreScaffolding.RecordNil))))). - -Definition PFieldFloat : forall (e : Num), forall (p : Num), PField (TCFloat e p) := - fun (e : Num) (p : Num) => let var__0 := TCFloat e p in - @SAWCoreScaffolding.RecordCons "fieldRing"%string (PRing var__0) (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (x : var__0), forall (y : var__0), var__0) SAWCoreScaffolding.RecordTypeNil)) (PRingFloat e p) (@SAWCoreScaffolding.RecordCons "recip"%string (forall (x : var__0), var__0) (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall (x : var__0), forall (y : var__0), var__0) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: recip Float"%string) (@SAWCoreScaffolding.RecordCons "fieldDiv"%string (forall (x : var__0), forall (y : var__0), var__0) SAWCoreScaffolding.RecordTypeNil (fun (x : var__0) (y : var__0) => SAWCoreScaffolding.error var__0 "Unimplemented: (/.) Float"%string) SAWCoreScaffolding.RecordNil)). - -Definition PRoundFloat : forall (e : Num), forall (p : Num), PRound (TCFloat e p) := - fun (e : Num) (p : Num) => let var__0 := TCFloat e p in - @SAWCoreScaffolding.RecordCons "roundField"%string (PField var__0) (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp var__0) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))))) (PFieldFloat e p) (@SAWCoreScaffolding.RecordCons "roundCmp"%string (PCmp var__0) (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))))) (PCmpFloat e p) (@SAWCoreScaffolding.RecordCons "floor"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)))) (fun (x : var__0) => SAWCoreScaffolding.error SAWCoreScaffolding.Integer "Unimplemented: floor Float"%string) (@SAWCoreScaffolding.RecordCons "ceiling"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil))) (fun (x : var__0) => SAWCoreScaffolding.error SAWCoreScaffolding.Integer "Unimplemented: ceiling Float"%string) (@SAWCoreScaffolding.RecordCons "trunc"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil)) (fun (x : var__0) => SAWCoreScaffolding.error SAWCoreScaffolding.Integer "Unimplemented: trunc Float"%string) (@SAWCoreScaffolding.RecordCons "roundAway"%string (forall (x : var__0), SAWCoreScaffolding.Integer) (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil) (fun (x : var__0) => SAWCoreScaffolding.error SAWCoreScaffolding.Integer "Unimplemented: roundAway Float"%string) (@SAWCoreScaffolding.RecordCons "roundToEven"%string (forall (x : var__0), SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil (fun (x : var__0) => SAWCoreScaffolding.error SAWCoreScaffolding.Integer "Unimplemented: roundToEven Float"%string) SAWCoreScaffolding.RecordNil)))))). - -Definition PLiteralFloat : forall (e : Num), forall (p : Num), PLiteral (TCFloat e p) := - fun (e : Num) (p : Num) (x : Init.Datatypes.nat) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: Literal Float"%string. - -Definition PFLiteralFloat : forall (e : Num), forall (p : Num), PFLiteral (TCFloat e p) := - fun (e : Num) (p : Num) (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (r : Init.Datatypes.nat) => SAWCoreScaffolding.Unit. - -Definition ecFpNaN : forall (e : Num), forall (p : Num), TCFloat e p := - fun (e : Num) (p : Num) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpNaN"%string. - -Definition ecFpPosInf : forall (e : Num), forall (p : Num), TCFloat e p := - fun (e : Num) (p : Num) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpPosInf"%string. - -Definition ecFpFromBits : forall (e : Num), forall (p : Num), forall (_1 : seq (tcAdd e p) Init.Datatypes.bool), TCFloat e p := - fun (e : Num) (p : Num) (_1 : seq (tcAdd e p) Init.Datatypes.bool) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpFromBits"%string. - -Definition ecFpToBits : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), seq (tcAdd e p) Init.Datatypes.bool := - fun (e : Num) (p : Num) (_1 : TCFloat e p) => SAWCoreScaffolding.error (seq (tcAdd e p) Init.Datatypes.bool) "Unimplemented: fpToBits"%string. - -Definition ecFpEq : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), forall (_2 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (_1 : TCFloat e p) (_2 : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: =.="%string. - -Definition ecFpAdd : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : TCFloat e p), forall (_3 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (_2 : TCFloat e p) (_3 : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpAdd"%string. - -Definition ecFpSub : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : TCFloat e p), forall (_3 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (_2 : TCFloat e p) (_3 : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpSub"%string. - -Definition ecFpMul : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : TCFloat e p), forall (_3 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (_2 : TCFloat e p) (_3 : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpMul"%string. - -Definition ecFpDiv : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : TCFloat e p), forall (_3 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (_2 : TCFloat e p) (_3 : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpDiv"%string. - -Definition ecFpToRational : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), SAWCoreScaffolding.Rational := - fun (e : Num) (p : Num) (_1 : TCFloat e p) => SAWCoreScaffolding.error SAWCoreScaffolding.Rational "Unimplemented: fpToRational"%string. - -Definition ecFpFromRational : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : SAWCoreScaffolding.Rational), TCFloat e p := - fun (e : Num) (p : Num) (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (_2 : SAWCoreScaffolding.Rational) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpFromRational"%string. - -Definition fpIsNaN : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: fpIsNaN"%string. - -Definition fpIsInf : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: fpIsInf"%string. - -Definition fpIsZero : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: fpIsZero"%string. - -Definition fpIsNeg : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: fpIsNeg"%string. - -Definition fpIsNormal : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: fpIsNormal"%string. - -Definition fpIsSubnormal : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), Init.Datatypes.bool := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: fpIsSubnormal"%string. - -Definition fpFMA : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : TCFloat e p), forall (_3 : TCFloat e p), forall (_4 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (r : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (x : TCFloat e p) (y : TCFloat e p) (z : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpFMA"%string. - -Definition fpAbs : forall (e : Num), forall (p : Num), forall (_1 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (x : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpAbs"%string. - -Definition fpSqrt : forall (e : Num), forall (p : Num), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool), forall (_2 : TCFloat e p), TCFloat e p := - fun (e : Num) (p : Num) (r : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) Init.Datatypes.bool) (x : TCFloat e p) => SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpSqrt"%string. - -Definition ecUpdate : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n a), forall (_3 : ix), forall (_4 : a), seq n a := - fun (n : Num) => @CryptolPrimitivesForSAWCore.Num_rect (fun (n1 : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n1 a), forall (_3 : ix), forall (_4 : a), seq n1 a) (fun (n1 : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (ix : Type) (pix : PIntegral ix) (xs : SAWCoreVectorsAsRocqVectors.Vec n1 a) => posNegCases ix pix (forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec n1 a) (SAWCorePrelude.upd n1 a xs) (fun (_1 : Init.Datatypes.nat) (_2 : a) => xs)) (fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (ix : Type) (pix : PIntegral ix) (xs : SAWCorePrelude.Stream a) => posNegCases ix pix (forall (_1 : a), SAWCorePrelude.Stream a) (SAWCorePrelude.streamUpd a xs) (fun (_1 : Init.Datatypes.nat) (_2 : a) => xs)) n. - -Definition ecUpdateEnd : forall (n : Num), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n a), forall (_3 : ix), forall (_4 : a), seq n a := - finNumRec (fun (n : Num) => forall (a : Type), forall (Inh_a : SAWCoreScaffolding.Inhabited a), forall (ix : Type), forall (_1 : PIntegral ix), forall (_2 : seq n a), forall (_3 : ix), forall (_4 : a), seq n a) (fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (ix : Type) (pix : PIntegral ix) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) => posNegCases ix pix (forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec n a) (fun (i : Init.Datatypes.nat) => SAWCorePrelude.upd n a xs (SAWCoreScaffolding.subNat (SAWCoreScaffolding.subNat n (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) i)) (fun (_1 : Init.Datatypes.nat) (_2 : a) => xs)). - -Definition ecTrunc : forall (m : Num), forall (n : Num), forall (_1 : seq (tcAdd m n) Init.Datatypes.bool), seq n Init.Datatypes.bool := - finNumRec2 (fun (m : Num) (n : Num) => forall (_1 : seq (tcAdd m n) Init.Datatypes.bool), seq n Init.Datatypes.bool) SAWCorePrelude.bvTrunc. - -Definition ecUExt : forall (m : Num), forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), seq (tcAdd m n) Init.Datatypes.bool := - finNumRec2 (fun (m : Num) (n : Num) => forall (_1 : seq n Init.Datatypes.bool), seq (tcAdd m n) Init.Datatypes.bool) SAWCorePrelude.bvUExt. - -Definition ecSExt : forall (m : Num), forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), seq (tcAdd m n) Init.Datatypes.bool := - finNumRec2 (fun (m : Num) (n : Num) => forall (_1 : seq n Init.Datatypes.bool), seq (tcAdd m n) Init.Datatypes.bool) (fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) => SAWCorePrelude.natCase (fun (n' : Init.Datatypes.nat) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n') Init.Datatypes.bool) (fun (_1 : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.bvNat (SAWCoreScaffolding.addNat m SAWCoreScaffolding.Zero) SAWCoreScaffolding.Zero) (SAWCorePrelude.bvSExt m) n). - -Definition ecSgt : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreVectorsAsRocqVectors.bvsgt. - -Definition ecSge : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreVectorsAsRocqVectors.bvsge. - -Definition ecSlt : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreVectorsAsRocqVectors.bvslt. - -Definition ecSle : forall (n : Num), forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (_1 : seq n Init.Datatypes.bool), forall (_2 : seq n Init.Datatypes.bool), Init.Datatypes.bool) SAWCoreVectorsAsRocqVectors.bvsle. - -Definition ecArrayConstant : forall (a : Type), forall (b : Type), forall (_1 : b), SAWCorePrelude.Array a b := - SAWCorePrelude.arrayConstant. - -Definition ecArrayLookup : forall (a : Type), forall (b : Type), forall (_1 : SAWCorePrelude.Array a b), forall (_2 : a), b := - SAWCorePrelude.arrayLookup. - -Definition ecArrayUpdate : forall (a : Type), forall (b : Type), forall (_1 : SAWCorePrelude.Array a b), forall (_2 : a), forall (_3 : b), SAWCorePrelude.Array a b := - SAWCorePrelude.arrayUpdate. - -Definition ecArrayCopy : forall (n : Num), forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_4 : seq n Init.Datatypes.bool), forall (_5 : seq n Init.Datatypes.bool), SAWCorePrelude.Array (seq n Init.Datatypes.bool) a := - finNumRec (fun (n : Num) => forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_4 : seq n Init.Datatypes.bool), forall (_5 : seq n Init.Datatypes.bool), SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) SAWCorePrelude.arrayCopy. - -Definition ecArrayEq : forall (n : Num), forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), Init.Datatypes.bool) (fun (n : Init.Datatypes.nat) => SAWCorePrelude.arrayEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)). - -Definition ecArraySet : forall (n : Num), forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : a), forall (_4 : seq n Init.Datatypes.bool), SAWCorePrelude.Array (seq n Init.Datatypes.bool) a := - finNumRec (fun (n : Num) => forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : a), forall (_4 : seq n Init.Datatypes.bool), SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) SAWCorePrelude.arraySet. - -Definition ecArrayRangeEq : forall (n : Num), forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_4 : seq n Init.Datatypes.bool), forall (_5 : seq n Init.Datatypes.bool), Init.Datatypes.bool := - finNumRec (fun (n : Num) => forall (a : Type), forall (_1 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_2 : seq n Init.Datatypes.bool), forall (_3 : SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), forall (_4 : seq n Init.Datatypes.bool), forall (_5 : seq n Init.Datatypes.bool), Init.Datatypes.bool) SAWCorePrelude.arrayRangeEq. - -Definition addNat_1 : forall (n : Init.Datatypes.nat), @Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) (SAWCoreScaffolding.Succ n) := - SAWCoreScaffolding.Nat__rec (fun (n : Init.Datatypes.nat) => @Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) (SAWCoreScaffolding.Succ n)) (@Init.Logic.eq_refl Init.Datatypes.nat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (fun (n : Init.Datatypes.nat) (ih : @Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) (SAWCoreScaffolding.Succ n)) => let var__0 := SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n in - let var__1 := SAWCoreScaffolding.Succ n in - SAWCorePrelude.trans Init.Datatypes.nat (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) var__1) (SAWCoreScaffolding.Succ var__0) (SAWCoreScaffolding.Succ var__1) (SAWCoreScaffolding.eqNatAddS (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) (SAWCorePrelude.eqNatSucc var__0 var__1 ih)). - -Definition ecPmult : forall (u : Num), forall (v : Num), forall (_1 : seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) u) Init.Datatypes.bool), forall (_2 : seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) v) Init.Datatypes.bool), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcAdd u v)) Init.Datatypes.bool := - finNumRec2 (fun (u : Num) (v : Num) => forall (_1 : seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) u) Init.Datatypes.bool), forall (_2 : seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) v) Init.Datatypes.bool), seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (tcAdd u v)) Init.Datatypes.bool) (fun (u : Init.Datatypes.nat) (v : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) u) Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) Init.Datatypes.bool) => let var__0 := SAWCoreScaffolding.addNat u v in - let var__1 := SAWCoreScaffolding.Succ var__0 in - let var__2 := SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) var__0 in - SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool var__1 var__2 (SAWCorePrelude.sym Init.Datatypes.nat var__2 var__1 (addNat_1 var__0)) (SAWCorePrelude.polyMul u v (SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) u) (SAWCoreScaffolding.Succ u) (addNat_1 u) x) (SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) (SAWCoreScaffolding.Succ v) (addNat_1 v) y))). - -Definition ecPmod : forall (u : Num), forall (v : Num), forall (_1 : seq u Init.Datatypes.bool), forall (_2 : seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) v) Init.Datatypes.bool), seq v Init.Datatypes.bool := - finNumRec2 (fun (u : Num) (v : Num) => forall (_1 : seq u Init.Datatypes.bool), forall (_2 : seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) v) Init.Datatypes.bool), seq v Init.Datatypes.bool) (fun (u : Init.Datatypes.nat) (v : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec u Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) Init.Datatypes.bool) => SAWCorePrelude.polyMod u v x (SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool (SAWCoreScaffolding.addNat (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) (SAWCoreScaffolding.Succ v) (addNat_1 v) y)). - -Definition AESEncRound : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (x : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: AESEncRound"%string. - -Definition AESEncFinalRound : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (x : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: AESEncFinalRound"%string. - -Definition AESDecRound : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (x : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: AESDecRound"%string. - -Definition AESDecFinalRound : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (x : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: AESDecFinalRound"%string. - -Definition AESInvMixColumns : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (x : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: AESInvMixColumns"%string. - -Definition AESKeyExpand : forall (k : Num), forall (_1 : seq k (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)), seq (tcMul (TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) k)) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (k : Num) (x : seq k (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) => SAWCoreScaffolding.error (seq (tcMul (TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) k)) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: AESKeyExpand"%string. - -Definition processSHA2_224 : forall (n : Num), forall (_1 : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool))), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (n : Num) (x : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool))) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: processSHA2_224"%string. - -Definition processSHA2_256 : forall (n : Num), forall (_1 : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool))), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - fun (n : Num) (x : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool))) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool)) "Unimplemented: processSHA2_256"%string. - -Definition processSHA2_384 : forall (n : Num), forall (_1 : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool))), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool) := - fun (n : Num) (x : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool))) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool)) "Unimplemented: processSHA2_384"%string. - -Definition processSHA2_512 : forall (n : Num), forall (_1 : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool))), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool) := - fun (n : Num) (x : seq n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool))) => SAWCoreScaffolding.error (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) Init.Datatypes.bool)) "Unimplemented: processSHA2_512"%string. - -Definition ProjectivePoint : forall (_1 : Num), Type := - fun (p : Num) => let var__0 := IntModNum p in - SAWCoreScaffolding.RecordTypeCons "x"%string var__0 (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 (SAWCoreScaffolding.RecordTypeCons "z"%string var__0 SAWCoreScaffolding.RecordTypeNil)). - -Definition ec_double : forall (p : Num), forall (_1 : ProjectivePoint p), ProjectivePoint p := - fun (p : Num) (x : ProjectivePoint p) => SAWCoreScaffolding.error (ProjectivePoint p) "Unimplemented: ec_double"%string. - -Definition ec_add_nonzero : forall (p : Num), forall (_1 : ProjectivePoint p), forall (_2 : ProjectivePoint p), ProjectivePoint p := - fun (p : Num) (x : ProjectivePoint p) (y : ProjectivePoint p) => SAWCoreScaffolding.error (ProjectivePoint p) "Unimplemented: ec_add_nonzero"%string. - -Definition ec_mult : forall (p : Num), forall (_1 : IntModNum p), forall (_2 : ProjectivePoint p), ProjectivePoint p := - fun (p : Num) (x : IntModNum p) (y : ProjectivePoint p) => SAWCoreScaffolding.error (ProjectivePoint p) "Unimplemented: ec_mult"%string. - -Definition ec_twin_mult : forall (p : Num), forall (_1 : IntModNum p), forall (_2 : ProjectivePoint p), forall (_3 : ProjectivePoint p), ProjectivePoint p := - fun (p : Num) (x : IntModNum p) (y : ProjectivePoint p) (z : ProjectivePoint p) => SAWCoreScaffolding.error (ProjectivePoint p) "Unimplemented: ec_twin_mult"%string. - -Axiom replicate_False : forall (n : Init.Datatypes.nat), @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCorePrelude.replicate n Init.Datatypes.bool Init.Datatypes.false) (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) . - -Axiom subNat_0 : forall (n : Init.Datatypes.nat), @Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.subNat n SAWCoreScaffolding.Zero) n . - -End CryptolPrimitivesForSAWCore. - diff --git a/otherTests/saw-core-rocq/test_cryptol_primitives.saw b/otherTests/saw-core-rocq/test_cryptol_primitives.saw index 2ab42b5d10..f8c4d62555 100644 --- a/otherTests/saw-core-rocq/test_cryptol_primitives.saw +++ b/otherTests/saw-core-rocq/test_cryptol_primitives.saw @@ -1,2 +1,2 @@ // Test: write_rocq_cryptol_primitives_for_sawcore command -write_rocq_cryptol_primitives_for_sawcore "" [] []; +write_rocq_cryptol_primitives_for_sawcore "test_cryptol_primitives_1.v" [] []; diff --git a/otherTests/saw-core-rocq/test_cryptol_primitives_1.v.good b/otherTests/saw-core-rocq/test_cryptol_primitives_1.v.good new file mode 100644 index 0000000000..5b0baa1b33 --- /dev/null +++ b/otherTests/saw-core-rocq/test_cryptol_primitives_1.v.good @@ -0,0 +1,12110 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import SAWCorePreludeExtra. + + +(** Code generated by saw-core-rocq *) + +Module CryptolPrimitivesForSAWCore. + +Definition const: forall (a b: Type) (_1: a) (_2: b), a := + fun (a b: Type) (x: a) (y: b) + => + x + . + +Definition compose: forall (a b c: Type) (_1: forall (_1: b), c) (_2: forall + (_2: a), + b) (_3: a), + c := + fun (a b c: Type) (f: forall (_1: b), c) (g: forall (_1: a), b) (x: a) + => + f (g x) + . + +Definition bvExp: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.foldr Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) n (fun + (b: Init.Datatypes.bool) (a: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + let var__0 + := + SAWCoreVectorsAsRocqVectors.bvMul n a a + in + if b then + SAWCoreVectorsAsRocqVectors.bvMul n x var__0 + else + var__0 + ) (SAWCoreVectorsAsRocqVectors.bvNat n + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (SAWCorePrelude.reverse n Init.Datatypes.bool y) + . + +Definition updFst: forall (a b: Type) (_1: forall (_1: a), a) (_2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b := + fun (a b: Type) (f: forall (_1: a), a) (x: SAWCoreScaffolding.PairType a b) + => + SAWCoreScaffolding.PairValue a b (f (SAWCorePrelude.Pair_fst a b x)) + (SAWCorePrelude.Pair_snd a b x) + . + +Definition updSnd: forall (a b: Type) (_1: forall (_1: b), b) (_2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b := + fun (a b: Type) (f: forall (_1: b), b) (x: SAWCoreScaffolding.PairType a b) + => + SAWCoreScaffolding.PairValue a b (SAWCorePrelude.Pair_fst a b x) + (f (SAWCorePrelude.Pair_snd a b x)) + . + +Definition updHeadRecord: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1: a), a) (_2: SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1: a), a) (x: + SAWCoreScaffolding.RecordTypeCons s a b) + => + @SAWCoreScaffolding.RecordCons s a b + (f (@SAWCoreScaffolding.recordHead s a b x)) + (@SAWCoreScaffolding.recordTail s a b x) + . + +Definition updTailRecord: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1: b), b) (_2: SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1: b), b) (x: + SAWCoreScaffolding.RecordTypeCons s a b) + => + @SAWCoreScaffolding.RecordCons s a b + (@SAWCoreScaffolding.recordHead s a b x) + (f (@SAWCoreScaffolding.recordTail s a b x)) + . + +Inductive Num: Type := +| TCNum: forall (_1: Init.Datatypes.nat), Num +| TCInf: Num +. + +Definition Num__rec: forall (p: forall (_1: Num), Type) (_1: forall + (n: Init.Datatypes.nat), + p (TCNum n)) (_2: p TCInf) (n: Num), + p n := + fun (p: forall (_1: Num), Type) (f1: forall (n: Init.Datatypes.nat), + p (TCNum n)) (f2: p TCInf) (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect p f1 f2 n + . + +Definition tcFin: forall (_1: Num), Init.Datatypes.bool := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + Init.Datatypes.bool + ) (fun (n1: Init.Datatypes.nat) => Init.Datatypes.true) + Init.Datatypes.false n + . + +Definition getFinNat: forall (n: Num), Init.Datatypes.nat := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + Init.Datatypes.nat + ) (fun (n1: Init.Datatypes.nat) => n1) + (SAWCoreScaffolding.error Init.Datatypes.nat + "Unexpected Fin constraint violation!"%string) n + . + +Definition finNumRec: forall (p: forall (_1: Num), Type) {Inh_p: forall + (_1: Num), + SAWCoreScaffolding.Inhabited (p _1)} (_1: forall + (n: Init.Datatypes.nat), + p (TCNum n)) (n: Num), + p n := + fun (p: forall (_1: Num), Type) (Inh_p: forall (_1: Num), + SAWCoreScaffolding.Inhabited (p _1)) (f: forall + (n: Init.Datatypes.nat), + p (TCNum n)) (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect p f + (SAWCoreScaffolding.error (p TCInf) + "Unexpected Fin constraint violation!"%string) n + . + +Definition finNumRec2: forall (p: forall (_1 _2: Num), Type) {Inh_p: forall + (_1 _2: Num), + SAWCoreScaffolding.Inhabited (p _1 _2)} (_1: forall + (m n: Init.Datatypes.nat), + p (TCNum m) (TCNum n)) (m n: Num), + p m n := + fun (p: forall (_1 _2: Num), Type) (Inh_p: forall (_1 _2: Num), + SAWCoreScaffolding.Inhabited (p _1 _2)) (f: forall + (m n: Init.Datatypes.nat), + p (TCNum m) (TCNum n)) + => + finNumRec (fun (m: Num) => forall (n: Num), p m n) (fun + (m: Init.Datatypes.nat) + => + finNumRec (p (TCNum m)) (f m) + ) + . + +Definition binaryNumFun: forall (_1: forall (_1 _2: Init.Datatypes.nat), + Init.Datatypes.nat) (_2: forall (_2: Init.Datatypes.nat), Num) + (_3: forall (_3: Init.Datatypes.nat), Num) (_4 _5 _6: Num), + Num := + fun (f1: forall (_1 _2: Init.Datatypes.nat), Init.Datatypes.nat) (f2: forall + (_1: Init.Datatypes.nat), + Num) (f3: forall (_1: Init.Datatypes.nat), Num) + (f4 num1 num2: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num1': Num) => Num) (fun + (n1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num2': Num) => Num) (fun + (n2: Init.Datatypes.nat) + => + TCNum (f1 n1 n2) + ) (f2 n1) num2 + ) (@CryptolPrimitivesForSAWCore.Num_rect (fun (num2': Num) => Num) f3 + f4 num2) num1 + . + +Definition ternaryNumFun: forall (_1: forall (_1 _2 _3: Init.Datatypes.nat), + Init.Datatypes.nat) (_2 _3 _4 _5: Num), + Num := + fun (f1: forall (_1 _2 _3: Init.Datatypes.nat), Init.Datatypes.nat) + (f2 num1 num2 num3: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num1': Num) => Num) (fun + (n1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num2': Num) => Num) (fun + (n2: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num3': Num) + => + Num + ) (fun (n3: Init.Datatypes.nat) => TCNum (f1 n1 n2 n3)) f2 + num3 + ) f2 num2 + ) f2 num1 + . + +Definition tcWidth: forall (_1: Num), Num := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) => Num) (fun + (x: Init.Datatypes.nat) + => + TCNum (SAWCoreScaffolding.widthNat x) + ) TCInf n + . + +Definition tcAdd: forall (_1 _2: Num), Num := + binaryNumFun SAWCoreScaffolding.addNat (fun (x: Init.Datatypes.nat) => TCInf) + (fun (y: Init.Datatypes.nat) => TCInf) TCInf. + +Definition tcSub: forall (_1 _2: Num), Num := + binaryNumFun SAWCoreScaffolding.subNat (fun (x: Init.Datatypes.nat) + => + TCNum SAWCoreScaffolding.Zero + ) (fun (y: Init.Datatypes.nat) => TCInf) (TCNum SAWCoreScaffolding.Zero). + +Definition tcMul: forall (_1 _2: Num), Num := + binaryNumFun SAWCoreScaffolding.mulNat (fun (x: Init.Datatypes.nat) + => + SAWCoreScaffolding.if0Nat Num x (TCNum SAWCoreScaffolding.Zero) TCInf + ) (fun (y: Init.Datatypes.nat) + => + SAWCoreScaffolding.if0Nat Num y (TCNum SAWCoreScaffolding.Zero) TCInf + ) TCInf. + +Definition tcDiv: forall (_1 _2: Num), Num := + binaryNumFun (fun (x y: Init.Datatypes.nat) => SAWCorePrelude.divNat x y) + (fun (x: Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) (fun + (y: Init.Datatypes.nat) + => + TCInf + ) (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)). + +Definition tcMod: forall (_1 _2: Num), Num := + binaryNumFun (fun (x y: Init.Datatypes.nat) => SAWCorePrelude.modNat x y) + (fun (x: Init.Datatypes.nat) => TCNum x) (fun (y: Init.Datatypes.nat) + => + TCNum SAWCoreScaffolding.Zero + ) (TCNum SAWCoreScaffolding.Zero). + +Definition tcExp: forall (_1 _2: Num), + Num := + binaryNumFun SAWCoreScaffolding.expNat (fun (x: Init.Datatypes.nat) + => + SAWCorePrelude.natCase (fun (_1: Init.Datatypes.nat) => Num) + (TCNum SAWCoreScaffolding.Zero) (fun (x_minus_1: Init.Datatypes.nat) + => + SAWCoreScaffolding.if0Nat Num x_minus_1 + (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + TCInf + ) x + ) (fun (y: Init.Datatypes.nat) + => + SAWCoreScaffolding.if0Nat Num y + (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + TCInf + ) TCInf. + +Definition tcMin: forall (_1 _2: Num), Num := + binaryNumFun SAWCoreScaffolding.minNat (fun (x: Init.Datatypes.nat) + => + TCNum x + ) (fun (y: Init.Datatypes.nat) => TCNum y) TCInf. + +Definition tcMax: forall (_1 _2: Num), Num := + binaryNumFun SAWCoreScaffolding.maxNat (fun (x: Init.Datatypes.nat) => TCInf) + (fun (y: Init.Datatypes.nat) => TCInf) TCInf. + +Definition ceilDivNat: forall (_1 _2: Init.Datatypes.nat), Init.Datatypes.nat := + fun (x y: Init.Datatypes.nat) + => + SAWCorePrelude.divNat + (SAWCoreScaffolding.addNat x + (SAWCoreScaffolding.subNat y + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) y + . + +Definition ceilModNat: forall (_1 _2: Init.Datatypes.nat), Init.Datatypes.nat := + fun (x y: Init.Datatypes.nat) + => + SAWCoreScaffolding.subNat (SAWCoreScaffolding.mulNat (ceilDivNat x y) y) x + . + +Definition tcCeilDiv: forall (_1 _2: Num), Num := + binaryNumFun ceilDivNat (fun (x: Init.Datatypes.nat) + => + TCNum SAWCoreScaffolding.Zero + ) (fun (y: Init.Datatypes.nat) => TCInf) TCInf. + +Definition tcCeilMod: forall (_1 _2: Num), Num := + binaryNumFun ceilModNat (fun (x: Init.Datatypes.nat) + => + TCNum SAWCoreScaffolding.Zero + ) (fun (y: Init.Datatypes.nat) => TCNum SAWCoreScaffolding.Zero) TCInf. + +Definition tcLenFromThenTo_Nat: forall (_1 _2 _3: Init.Datatypes.nat), + Init.Datatypes.nat := + fun (x y z: Init.Datatypes.nat) + => + if SAWCoreScaffolding.ltNat x y then + if SAWCoreScaffolding.ltNat z x then + SAWCoreScaffolding.Zero + else + SAWCoreScaffolding.addNat + (SAWCorePrelude.divNat (SAWCoreScaffolding.subNat z x) + (SAWCoreScaffolding.subNat y x)) + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + else + if SAWCoreScaffolding.ltNat x z then + SAWCoreScaffolding.Zero + else + SAWCoreScaffolding.addNat + (SAWCorePrelude.divNat (SAWCoreScaffolding.subNat x z) + (SAWCoreScaffolding.subNat x y)) + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + . + +Definition tcLenFromThenTo: forall (_1 _2 _3: Num), Num := + ternaryNumFun tcLenFromThenTo_Nat TCInf. + +Definition binaryNumPred: forall (_1: forall (_1 _2: Init.Datatypes.nat), + Init.Datatypes.bool) (_2: forall (_2: Init.Datatypes.nat), + Init.Datatypes.bool) (_3: forall (_3: Init.Datatypes.nat), + Init.Datatypes.bool) (_4: Init.Datatypes.bool) (_5 _6: Num), + Init.Datatypes.bool := + fun (f1: forall (_1 _2: Init.Datatypes.nat), Init.Datatypes.bool) (f2: forall + (_1: Init.Datatypes.nat), + Init.Datatypes.bool) (f3: forall (_1: Init.Datatypes.nat), + Init.Datatypes.bool) (f4: Init.Datatypes.bool) (num1 num2: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num1': Num) + => + Init.Datatypes.bool + ) (fun (n1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num2': Num) + => + Init.Datatypes.bool + ) (fun (n2: Init.Datatypes.nat) => f1 n1 n2) (f2 n1) num2 + ) (@CryptolPrimitivesForSAWCore.Num_rect (fun (num2': Num) + => + Init.Datatypes.bool + ) f3 f4 num2) num1 + . + +Definition tcEqual: forall (_1 _2: Num), Init.Datatypes.bool := + binaryNumPred SAWCoreScaffolding.equalNat (fun (x: Init.Datatypes.nat) + => + Init.Datatypes.false + ) (fun (y: Init.Datatypes.nat) => Init.Datatypes.false) + Init.Datatypes.true. + +Definition tcLt: forall (_1 _2: Num), Init.Datatypes.bool := + binaryNumPred SAWCoreScaffolding.ltNat (fun (x: Init.Datatypes.nat) + => + Init.Datatypes.true + ) (fun (y: Init.Datatypes.nat) => Init.Datatypes.false) + Init.Datatypes.true. + +Definition seq: forall (_1: Num) (_2: Type), Type := + fun (num: Num) (a: Type) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num1: Num) => Type) (fun + (n: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.Vec n a + ) (SAWCorePrelude.Stream a) num + . + +Definition seq_TCNum: forall (n: Init.Datatypes.nat) (a: Type), + @Init.Logic.eq Type (seq (TCNum n) a) + (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (n: Init.Datatypes.nat) (a: Type) + => + @Init.Logic.eq_refl Type (SAWCoreVectorsAsRocqVectors.Vec n a) + . + +Definition seq_TCInf: forall (a: Type), + @Init.Logic.eq Type (seq TCInf a) (SAWCorePrelude.Stream a) := + fun (a: Type) + => + @Init.Logic.eq_refl Type (SAWCorePrelude.Stream a) + . + +Definition seqMap: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) (n: Num) (_1: forall (_1: a), b) (_2: seq n a), + seq n b := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (n: Num) + (f: forall (_1: a), b) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: seq n1 a), + seq n1 b + ) (SAWCorePrelude.map a b f) (SAWCorePrelude.streamMap a b f) n + . + +Definition seqConst: forall (n: Num) (a: Type) (_1: a), seq n a := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (_1: a), + seq n1 a + ) SAWCorePrelude.replicate SAWCorePrelude.streamConst n + . + +Definition seqInhabited: forall (n: Num) (a: Type) (x: a), seq n a := + CryptolPrimitivesForSAWCore.Num__rec (fun (n: Num) + => + forall (a: Type) (x: a), + seq n a + ) (fun (n: Init.Datatypes.nat) (a: Type) (x: a) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (i: Init.Datatypes.nat) => x) + ) (fun (a: Type) (x: a) + => + SAWCorePrelude.MkStream a (fun (i: Init.Datatypes.nat) => x) + ). + +#[global] Instance Inhabited_seq (n:Num) (a:Type) (Ha:Inhabited a) : Inhabited (seq n a) := MkInhabited (seq n a) (seqInhabited n a inhabitant). +Definition IntModNum: forall (num: Num), Type := + fun (num: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n: Num) => Type) + SAWCoreScaffolding.IntMod SAWCoreScaffolding.Integer num + . + +Definition seq_cong: forall (m n: Num) (a b: Type) (_1: @Init.Logic.eq Num m n) + (_2: @Init.Logic.eq Type a b), + @Init.Logic.eq Type (seq m a) (seq n b) := + fun (m n: Num) (a b: Type) (eq_mn: @Init.Logic.eq Num m n) (eq_ab: + @Init.Logic.eq Type a b) + => + SAWCorePrelude.trans Type (seq m a) (seq n a) (seq n b) + (SAWCorePrelude.eq_cong Num m n eq_mn Type (fun (x: Num) => seq x a)) + (SAWCorePrelude.eq_cong Type a b eq_ab Type (fun (x: Type) => seq n x)) + . + +Definition seq_cong1: forall (m n: Num) (a: Type) (_1: @Init.Logic.eq Num m n), + @Init.Logic.eq Type (seq m a) (seq n a) := + fun (m n: Num) (a: Type) (eq_mn: @Init.Logic.eq Num m n) + => + SAWCorePrelude.eq_cong Num m n eq_mn Type (fun (x: Num) => seq x a) + . + +Definition IntModNum_cong: forall (m n: Num) (_1: @Init.Logic.eq Num m n), + @Init.Logic.eq Type (IntModNum m) (IntModNum n) := + fun (m n: Num) (eq_mn: @Init.Logic.eq Num m n) + => + SAWCorePrelude.eq_cong Num m n eq_mn Type IntModNum + . + +Definition fun_cong: forall (a b c d: Type) (_1: @Init.Logic.eq Type a b) (_2: + @Init.Logic.eq Type c d), + @Init.Logic.eq Type (forall (_3: a), c) (forall (_3: b), d) := + fun (a b c d: Type) (eq_ab: @Init.Logic.eq Type a b) (eq_cd: + @Init.Logic.eq Type c d) + => + SAWCorePrelude.trans Type (forall (_1: a), c) (forall (_1: b), c) (forall + (_1: b), + d) + (SAWCorePrelude.eq_cong Type a b eq_ab Type (fun (x: Type) + => + forall (_1: x), + c + )) + (SAWCorePrelude.eq_cong Type c d eq_cd Type (fun (x: Type) + => + forall (_1: b), + x + )) + . + +Definition pair_cong: forall (a a' b b': Type) (_1: @Init.Logic.eq Type a a') + (_2: @Init.Logic.eq Type b b'), + @Init.Logic.eq Type (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairType a' b') := + fun (a a' b b': Type) (eq_a: @Init.Logic.eq Type a a') (eq_b: + @Init.Logic.eq Type b b') + => + SAWCorePrelude.trans Type (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairType a' b) (SAWCoreScaffolding.PairType a' b') + (SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x: Type) + => + SAWCoreScaffolding.PairType x b + )) + (SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x: Type) + => + SAWCoreScaffolding.PairType a' x + )) + . + +Definition pair_cong1: forall (a a' b: Type) (_1: @Init.Logic.eq Type a a'), + @Init.Logic.eq Type (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairType a' b) := + fun (a a' b: Type) (eq_a: @Init.Logic.eq Type a a') + => + SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x: Type) + => + SAWCoreScaffolding.PairType x b + ) + . + +Definition pair_cong2: forall (a b b': Type) (_1: @Init.Logic.eq Type b b'), + @Init.Logic.eq Type (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairType a b') := + fun (a b b': Type) (eq_b: @Init.Logic.eq Type b b') + => + SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x: Type) + => + SAWCoreScaffolding.PairType a x + ) + . + +Definition record_cong: forall (s: Stdlib.Strings.String.string) + (a a' b b': Type) (_1: @Init.Logic.eq Type a a') (_2: + @Init.Logic.eq Type b b'), + @Init.Logic.eq Type (SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons s a' b') := + fun (s: Stdlib.Strings.String.string) (a a' b b': Type) (eq_a: + @Init.Logic.eq Type a a') (eq_b: @Init.Logic.eq Type b b') + => + SAWCorePrelude.trans Type (SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons s a' b) + (SAWCoreScaffolding.RecordTypeCons s a' b') + (SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x: Type) + => + SAWCoreScaffolding.RecordTypeCons s x b + )) + (SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x: Type) + => + SAWCoreScaffolding.RecordTypeCons s a' x + )) + . + +Definition record_cong1: forall (s: Stdlib.Strings.String.string) (a a' b: Type) + (_1: @Init.Logic.eq Type a a'), + @Init.Logic.eq Type (SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons s a' b) := + fun (s: Stdlib.Strings.String.string) (a a' b: Type) (eq_a: + @Init.Logic.eq Type a a') + => + SAWCorePrelude.eq_cong Type a a' eq_a Type (fun (x: Type) + => + SAWCoreScaffolding.RecordTypeCons s x b + ) + . + +Definition record_cong2: forall (s: Stdlib.Strings.String.string) (a b b': Type) + (_1: @Init.Logic.eq Type b b'), + @Init.Logic.eq Type (SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons s a b') := + fun (s: Stdlib.Strings.String.string) (a b b': Type) (eq_b: + @Init.Logic.eq Type b b') + => + SAWCorePrelude.eq_cong Type b b' eq_b Type (fun (x: Type) + => + SAWCoreScaffolding.RecordTypeCons s a x + ) + . + +(* "Cryptol::unsafeAssert_same_Num@core" was skipped *) + +Definition eListSel: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (n: Num) (_1: seq n a) (_2: Init.Datatypes.nat), + a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (num: Num) + => + forall (_1: seq num a) (_2: Init.Datatypes.nat), + a + ) (fun (n1: Init.Datatypes.nat) => SAWCorePrelude.sawAt n1 a) + (SAWCorePrelude.streamGet a) n + . + +Definition from: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} (m n: Num) (_1: + seq m a) (_2: forall (_2: a), seq n b), + seq (tcMul m n) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (m n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (_1: seq m1 a) (_2: forall (_2: a), seq n b), + seq (tcMul m1 n) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (m1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec m1 a) (_2: forall + (_2: a), + seq n1 b), + seq (tcMul (TCNum m1) n1) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n1: Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec m1 a) (k: forall (_1: a), + SAWCoreVectorsAsRocqVectors.Vec n1 b) + => + let var__0 + := + SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) + in + SAWCorePrelude.join m1 n1 var__0 + (SAWCorePrelude.map a + (SAWCoreVectorsAsRocqVectors.Vec n1 var__0) (fun (x: a) + => + SAWCorePrelude.map b var__0 (fun (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y + SAWCoreScaffolding.Unit) + ) n1 (k x) + ) m1 xs) + ) + (SAWCorePrelude.natCase (fun (m': Init.Datatypes.nat) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec m' a) + (_2: forall (_2: a), SAWCorePrelude.Stream b), + seq (SAWCoreScaffolding.if0Nat Num m' + (TCNum SAWCoreScaffolding.Zero) TCInf) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) + (fun + (xs: SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + a) (k: forall (_1: a), SAWCorePrelude.Stream b) + => + SAWCoreVectorsAsRocqVectors.EmptyVec + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (m': Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.Succ m') a) (k: forall (_1: a), + SAWCorePrelude.Stream b) + => + (fun (x: a) + => + SAWCorePrelude.streamMap b + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) (fun (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y + SAWCoreScaffolding.Unit) + ) (k x) + ) (SAWCorePrelude.sawAt (SAWCoreScaffolding.Succ m') a xs + SAWCoreScaffolding.Zero) + ) m1) n + ) + (@CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: SAWCorePrelude.Stream a) (_2: forall (_2: a), + seq n1 b), + seq (tcMul TCInf n1) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n1: Init.Datatypes.nat) + => + SAWCorePrelude.natCase (fun (n': Init.Datatypes.nat) + => + forall (_1: SAWCorePrelude.Stream a) (_2: forall (_2: a), + SAWCoreVectorsAsRocqVectors.Vec n' b), + seq (SAWCoreScaffolding.if0Nat Num n' + (TCNum SAWCoreScaffolding.Zero) TCInf) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) + (fun + (xs: SAWCorePrelude.Stream a) + (k: forall (_1: a), + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + b) + => + SAWCoreVectorsAsRocqVectors.EmptyVec + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n': Init.Datatypes.nat) (xs: SAWCorePrelude.Stream a) + (k: forall (_1: a), + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.Succ n') b) + => + let var__0 + := + SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) + in + SAWCorePrelude.streamJoin var__0 n' + (SAWCorePrelude.streamMap a + (SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.Succ n') var__0) (fun (x: a) + => + SAWCorePrelude.map b var__0 (fun (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y + SAWCoreScaffolding.Unit) + ) (SAWCoreScaffolding.Succ n') (k x) + ) xs) + ) n1 + ) (fun (xs: SAWCorePrelude.Stream a) (k: forall (_1: a), + SAWCorePrelude.Stream b) + => + (fun (x: a) + => + SAWCorePrelude.streamMap b + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) (fun (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y + SAWCoreScaffolding.Unit) + ) (k x) + ) (SAWCorePrelude.streamGet a xs SAWCoreScaffolding.Zero) + ) n) m + . + +Definition mlet: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} (n: Num) (_1: a) + (_2: forall (_2: a), seq n b), + seq n (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: a) (_2: forall (_2: a), seq n1 b), + seq n1 (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n1: Init.Datatypes.nat) (x: a) (f: forall (_1: a), + SAWCoreVectorsAsRocqVectors.Vec n1 b) + => + SAWCorePrelude.map b + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) + (fun (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) + x (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit) + ) n1 (f x) + ) (fun (x: a) (f: forall (_1: a), SAWCorePrelude.Stream b) + => + SAWCorePrelude.streamMap b + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) + (fun (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) + x (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit) + ) (f x) + ) n + . + +Definition seqZip: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} (m n: Num) (_1: + seq m a) (_2: seq n b), + seq (tcMin m n) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (m n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (_1: seq m1 a) (_2: seq n b), + seq (tcMin m1 n) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (m1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec m1 a) (_2: + seq n1 b), + seq (tcMin (TCNum m1) n1) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n1: Init.Datatypes.nat) => SAWCorePrelude.zip a b m1 n1) + (fun (xs: SAWCoreVectorsAsRocqVectors.Vec m1 a) (ys: + SAWCorePrelude.Stream b) + => + SAWCoreVectorsAsRocqVectors.gen m1 + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) (fun + (i: Init.Datatypes.nat) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) + (SAWCorePrelude.sawAt m1 a xs i) + (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType + (SAWCorePrelude.streamGet b ys i) + SAWCoreScaffolding.Unit) + ) + ) n + ) (@CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: SAWCorePrelude.Stream a) (_2: seq n1 b), + seq (tcMin TCInf n1) + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n1: Init.Datatypes.nat) (xs: SAWCorePrelude.Stream a) (ys: + SAWCoreVectorsAsRocqVectors.Vec n1 b) + => + SAWCoreVectorsAsRocqVectors.gen n1 + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) (fun + (i: Init.Datatypes.nat) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType) + (SAWCorePrelude.streamGet a xs i) + (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType + (SAWCorePrelude.sawAt n1 b ys i) + SAWCoreScaffolding.Unit) + ) + ) (SAWCorePrelude.streamMap2 a b + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) + (fun (x: a) (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) + x (SAWCoreScaffolding.PairValue b + SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit) + )) n) m + . + +Definition zipSame: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} + (n: Init.Datatypes.nat) (_1: SAWCoreVectorsAsRocqVectors.Vec n a) (_2: + SAWCoreVectorsAsRocqVectors.Vec n b), + SAWCoreVectorsAsRocqVectors.Vec n + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n a) (y: + SAWCoreVectorsAsRocqVectors.Vec n b) + => + SAWCoreVectorsAsRocqVectors.gen n + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun + (i: Init.Datatypes.nat) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) + (SAWCorePrelude.sawAt n a x i) + (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType + (SAWCorePrelude.sawAt n b y i) SAWCoreScaffolding.Unit) + ) + . + +Definition seqZipSame: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} (n: Num) (_1: seq n a) + (_2: seq n b), + seq n (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: seq n1 a) (_2: seq n1 b), + seq n1 (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b + SAWCoreScaffolding.UnitType)) + ) (fun (n1: Init.Datatypes.nat) => zipSame a b n1) + (SAWCorePrelude.streamMap2 a b + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) (fun + (x: a) (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y + SAWCoreScaffolding.Unit) + )) n + . + +Definition seqBinary: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: forall (_1 _2: a), a) (_2 _3: + seq n a), + seq n a := + fun (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (f: forall + (_1 _2: a), + a) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1 _2: seq n1 a), + seq n1 a + ) (fun (n1: Init.Datatypes.nat) => SAWCorePrelude.zipWith a a a f n1) + (SAWCorePrelude.streamMap2 a a a f) n + . + +Definition unitUnary: forall (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType := + fun (_1: SAWCoreScaffolding.UnitType) + => + SAWCoreScaffolding.Unit + . + +Definition unitBinary: forall (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType := + fun (_1 _2: SAWCoreScaffolding.UnitType) + => + SAWCoreScaffolding.Unit + . + +Definition pairUnary: forall (a b: Type) (_1: forall (_1: a), a) (_2: forall + (_2: b), + b) (_3: SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b := + fun (a b: Type) (f: forall (_1: a), a) (g: forall (_1: b), b) (xy: + SAWCoreScaffolding.PairType a b) + => + SAWCoreScaffolding.PairValue a b (f (SAWCorePrelude.Pair_fst a b xy)) + (g (SAWCorePrelude.Pair_snd a b xy)) + . + +Definition pairBinary: forall (a b: Type) (_1: forall (_1 _2: a), a) (_2: forall + (_2 _3: b), + b) (_3 _4: SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b := + fun (a b: Type) (f: forall (_1 _2: a), a) (g: forall (_1 _2: b), b) + (x12 y12: SAWCoreScaffolding.PairType a b) + => + SAWCoreScaffolding.PairValue a b + (f (SAWCorePrelude.Pair_fst a b x12) (SAWCorePrelude.Pair_fst a b y12)) + (g (SAWCorePrelude.Pair_snd a b x12) (SAWCorePrelude.Pair_snd a b y12)) + . + +Definition emptyUnary: forall (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil := + fun (_1: SAWCoreScaffolding.RecordTypeNil) + => + SAWCoreScaffolding.RecordNil + . + +Definition emptyBinary: forall (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil := + fun (_1 _2: SAWCoreScaffolding.RecordTypeNil) + => + SAWCoreScaffolding.RecordNil + . + +Definition recordUnary: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1: a), a) (_2: forall (_2: b), b) (_3: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1: a), a) + (g: forall (_1: b), b) (x: SAWCoreScaffolding.RecordTypeCons s a b) + => + @SAWCoreScaffolding.RecordCons s a b + (f (@SAWCoreScaffolding.recordHead s a b x)) + (g (@SAWCoreScaffolding.recordTail s a b x)) + . + +Definition recordBinary: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1 _2: a), a) (_2: forall (_2 _3: b), b) (_3 _4: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1 _2: a), a) + (g: forall (_1 _2: b), b) (x y: SAWCoreScaffolding.RecordTypeCons s a b) + => + @SAWCoreScaffolding.RecordCons s a b + (f (@SAWCoreScaffolding.recordHead s a b x) + (@SAWCoreScaffolding.recordHead s a b y)) + (g (@SAWCoreScaffolding.recordTail s a b x) + (@SAWCoreScaffolding.recordTail s a b y)) + . + +Definition funBinary: forall (a b: Type) (_1: forall (_1 _2: b), b) (_2: forall + (_2: a), + b) (_3: forall (_3: a), b) (_4: a), + b := + fun (a b: Type) (op: forall (_1 _2: b), b) (f: forall (_1: a), b) (g: forall + (_1: a), + b) (x: a) + => + op (f x) (g x) + . + +Definition errorUnary: forall (s: Stdlib.Strings.String.string) (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} (_1: a), + a := + fun (s: Stdlib.Strings.String.string) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: a) + => + SAWCoreScaffolding.error a s + . + +Definition errorBinary: forall (s: Stdlib.Strings.String.string) (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} (_1 _2: a), + a := + fun (s: Stdlib.Strings.String.string) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1 _2: a) + => + SAWCoreScaffolding.error a s + . + +Definition boolCmp: forall (_1 _2 _3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (x y k: Init.Datatypes.bool) + => + if x then + Init.Datatypes.andb y k + else + Init.Datatypes.orb y k + . + +Definition boolLt: forall (_1 _2: Init.Datatypes.bool), Init.Datatypes.bool := + fun (x y: Init.Datatypes.bool) + => + Init.Datatypes.andb (Init.Datatypes.negb x) y + . + +Definition integerCmp: forall (_1 _2: SAWCoreScaffolding.Integer) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (x y: SAWCoreScaffolding.Integer) (k: Init.Datatypes.bool) + => + Init.Datatypes.orb (SAWCoreScaffolding.intLt x y) + (Init.Datatypes.andb (SAWCoreScaffolding.intEqb x y) k) + . + +Definition rationalCmp: forall (_1 _2: SAWCoreScaffolding.Rational) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (x y: SAWCoreScaffolding.Rational) (k: Init.Datatypes.bool) + => + Init.Datatypes.orb (SAWCoreScaffolding.rationalLt x y) + (Init.Datatypes.andb (SAWCoreScaffolding.rationalEqb x y) k) + . + +Definition bvCmp: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (k: Init.Datatypes.bool) + => + Init.Datatypes.orb (SAWCoreVectorsAsRocqVectors.bvult n x y) + (Init.Datatypes.andb (SAWCorePrelude.bvEq n x y) k) + . + +Definition bvSCmp: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (k: Init.Datatypes.bool) + => + Init.Datatypes.orb (SAWCoreVectorsAsRocqVectors.bvslt n x y) + (Init.Datatypes.andb (SAWCorePrelude.bvEq n x y) k) + . + +Definition vecCmp: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (_2 _3: + SAWCoreVectorsAsRocqVectors.Vec n a) (_4: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (f: forall (_1 _2: a) (_3: Init.Datatypes.bool), Init.Datatypes.bool) + (xs ys: SAWCoreVectorsAsRocqVectors.Vec n a) (k: Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.foldr (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) Init.Datatypes.bool n (fun (f1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) + => + f1 + ) k (SAWCorePrelude.zipWith a a (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) f n xs ys) + . + +Definition vecLt: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (_2: forall (_2 _3: a), + Init.Datatypes.bool) (_3 _4: + SAWCoreVectorsAsRocqVectors.Vec n a), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (f: forall (_1 _2: a) (_3: Init.Datatypes.bool), Init.Datatypes.bool) + (g: forall (_1 _2: a), Init.Datatypes.bool) (xs ys: + SAWCoreVectorsAsRocqVectors.Vec n a) + => + SAWCoreVectorsAsRocqVectors.foldr (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) Init.Datatypes.bool n (fun (f1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) + => + f1 + ) Init.Datatypes.false + (SAWCorePrelude.zipWith a a (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) f n xs ys) + . + +Definition unitCmp: forall (_1 _2: SAWCoreScaffolding.UnitType) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.UnitType) (k: Init.Datatypes.bool) + => + k + . + +Definition unitLe: forall (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.UnitType) + => + Init.Datatypes.true + . + +Definition unitLt: forall (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.UnitType) + => + Init.Datatypes.false + . + +Definition pairCmp: forall (a b: Type) (_1: forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (_2: forall (_2 _3: b) + (_4: Init.Datatypes.bool), + Init.Datatypes.bool) (_3 _4: SAWCoreScaffolding.PairType a b) + (_5: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (a b: Type) (f: forall (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (g: forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (x12 y12: SAWCoreScaffolding.PairType a b) + (k: Init.Datatypes.bool) + => + f (SAWCorePrelude.Pair_fst a b x12) (SAWCorePrelude.Pair_fst a b y12) + (g (SAWCorePrelude.Pair_snd a b x12) (SAWCorePrelude.Pair_snd a b y12) + k) + . + +Definition pairLt: forall (a b: Type) (_1: forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (_2: forall (_2 _3: b), + Init.Datatypes.bool) (_3 _4: SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool := + fun (a b: Type) (f: forall (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (g: forall (_1 _2: b), Init.Datatypes.bool) + (x y: SAWCoreScaffolding.PairType a b) + => + f (SAWCorePrelude.Pair_fst a b x) (SAWCorePrelude.Pair_fst a b y) + (g (SAWCorePrelude.Pair_snd a b x) (SAWCorePrelude.Pair_snd a b y)) + . + +Definition emptyCmp: forall (_1 _2: SAWCoreScaffolding.RecordTypeNil) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.RecordTypeNil) (k: Init.Datatypes.bool) + => + k + . + +Definition emptyLe: forall (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.RecordTypeNil) + => + Init.Datatypes.true + . + +Definition emptyLt: forall (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.RecordTypeNil) + => + Init.Datatypes.false + . + +Definition recordEq: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1 _2: a), Init.Datatypes.bool) (_2: forall (_2 _3: b), + Init.Datatypes.bool) (_3 _4: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1 _2: a), + Init.Datatypes.bool) (g: forall (_1 _2: b), Init.Datatypes.bool) + (x y: SAWCoreScaffolding.RecordTypeCons s a b) + => + Init.Datatypes.andb + (f (@SAWCoreScaffolding.recordHead s a b x) + (@SAWCoreScaffolding.recordHead s a b y)) + (g (@SAWCoreScaffolding.recordTail s a b x) + (@SAWCoreScaffolding.recordTail s a b y)) + . + +Definition recordCmp: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1 _2: a) (_3: Init.Datatypes.bool), Init.Datatypes.bool) + (_2: forall (_2 _3: b) (_4: Init.Datatypes.bool), Init.Datatypes.bool) + (_3 _4: SAWCoreScaffolding.RecordTypeCons s a b) + (_5: Init.Datatypes.bool), + Init.Datatypes.bool := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (g: forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (x y: + SAWCoreScaffolding.RecordTypeCons s a b) (k: Init.Datatypes.bool) + => + f (@SAWCoreScaffolding.recordHead s a b x) + (@SAWCoreScaffolding.recordHead s a b y) + (g (@SAWCoreScaffolding.recordTail s a b x) + (@SAWCoreScaffolding.recordTail s a b y) k) + . + +Definition recordLt: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: forall (_1 _2: a) (_3: Init.Datatypes.bool), Init.Datatypes.bool) + (_2: forall (_2 _3: b), Init.Datatypes.bool) (_3 _4: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool := + fun (s: Stdlib.Strings.String.string) (a b: Type) (f: forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) (g: forall (_1 _2: b), Init.Datatypes.bool) + (x y: SAWCoreScaffolding.RecordTypeCons s a b) + => + f (@SAWCoreScaffolding.recordHead s a b x) + (@SAWCoreScaffolding.recordHead s a b y) + (g (@SAWCoreScaffolding.recordTail s a b x) + (@SAWCoreScaffolding.recordTail s a b y)) + . + +Definition PEq: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "eq"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + . + +Definition PEqBit: PEq Init.Datatypes.bool := + @SAWCoreScaffolding.RecordCons "eq"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + SAWCoreScaffolding.boolEqb SAWCoreScaffolding.RecordNil. + +Definition PEqInteger: PEq SAWCoreScaffolding.Integer := + @SAWCoreScaffolding.RecordCons "eq"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + SAWCoreScaffolding.intEqb SAWCoreScaffolding.RecordNil. + +Definition PEqRational: PEq SAWCoreScaffolding.Rational := + @SAWCoreScaffolding.RecordCons "eq"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + SAWCoreScaffolding.rationalEqb SAWCoreScaffolding.RecordNil. + +Definition PEqIntMod: forall (n: Init.Datatypes.nat), + PEq (SAWCoreScaffolding.IntMod n) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCoreScaffolding.intModEqb n) SAWCoreScaffolding.RecordNil + . + +Definition PEqIntModNum: forall (num: Num), PEq (IntModNum num) := + fun (num: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n: Num) => PEq (IntModNum n)) + PEqIntMod PEqInteger num + . + +Definition PEqVec: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PEq a), + PEq (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (pa: PEq a) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.vecEq n a + (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa)) + SAWCoreScaffolding.RecordNil + . + +Definition PEqSeq: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PEq a), + PEq (seq n a) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PEq a), + PEq (seq n1 a) + ) (fun (n1: Init.Datatypes.nat) => PEqVec n1) (fun (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PEq a) + => + SAWCoreScaffolding.error (PEq (SAWCorePrelude.Stream a)) + "invalid Eq instance"%string + ) n + . + +Definition PEqWord: forall (n: Init.Datatypes.nat), + PEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.bvEq n) SAWCoreScaffolding.RecordNil + . + +Definition PEqSeqBool: forall (n: Num), PEq (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PEq (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) => PEqWord n1) + (SAWCoreScaffolding.error + (PEq (SAWCorePrelude.Stream Init.Datatypes.bool)) + "invalid Eq instance"%string) n + . + +Definition PEqUnit: PEq SAWCoreScaffolding.UnitType := + @SAWCoreScaffolding.RecordCons "eq"%string (forall + (x y: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun + (x y: SAWCoreScaffolding.UnitType) + => + Init.Datatypes.true + ) SAWCoreScaffolding.RecordNil. + +Definition PEqPair: forall (a b: Type) (_1: PEq a) (_2: PEq b), + PEq (SAWCoreScaffolding.PairType a b) := + fun (a b: Type) (pa: PEq a) (pb: PEq b) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.pairEq a b + (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa) + (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 _2: b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pb)) + SAWCoreScaffolding.RecordNil + . + +Definition PEqEmpty: PEq SAWCoreScaffolding.RecordTypeNil := + @SAWCoreScaffolding.RecordCons "eq"%string (forall + (x y: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun + (x y: SAWCoreScaffolding.RecordTypeNil) + => + Init.Datatypes.true + ) SAWCoreScaffolding.RecordNil. + +Definition PEqRecord: forall (s: Stdlib.Strings.String.string) (a b: Type) (_1: + PEq a) (_2: PEq b), + PEq (SAWCoreScaffolding.RecordTypeCons s a b) := + fun (s: Stdlib.Strings.String.string) (a b: Type) (pa: PEq a) (pb: PEq b) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (recordEq s a b + (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa) + (@SAWCoreScaffolding.recordHead "eq"%string (forall (_1 _2: b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pb)) + SAWCoreScaffolding.RecordNil + . + +Definition PEqVoid: PEq Init.Datatypes.Empty_set := + @SAWCoreScaffolding.RecordCons "eq"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set), + Init.Datatypes.bool)) SAWCoreScaffolding.RecordNil. + +Definition PEqEither: forall (a b: Type) (_1: PEq a) (_2: PEq b), + PEq (Init.Datatypes.sum a b) := + fun (a b: Type) (pa: PEq a) (pb: PEq b) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (e1 e2: + Init.Datatypes.sum a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun + (e1 e2: Init.Datatypes.sum a b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2: a) + => + @SAWCoreScaffolding.recordHead "eq"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil pa x1 x2 + ) (fun (_y2: b) => Init.Datatypes.false) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "eq"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil pb y1 y2 + ) e2 + ) e1 + ) SAWCoreScaffolding.RecordNil + . + +Definition PCmp: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + . + +Definition PCmpBit: PCmp Init.Datatypes.bool := + @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2 _3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqBit + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall + (_1 _2 _3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + boolCmp + (@SAWCoreScaffolding.RecordCons "le"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + SAWCorePrelude.implies + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil boolLt + SAWCoreScaffolding.RecordNil))). + +Definition PCmpInteger: PCmp SAWCoreScaffolding.Integer := + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.Integer) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqInteger + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.Integer) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + integerCmp + (@SAWCoreScaffolding.RecordCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.intLe + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + SAWCoreScaffolding.intLt SAWCoreScaffolding.RecordNil))). + +Definition PCmpRational: PCmp SAWCoreScaffolding.Rational := + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.Rational) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqRational + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.Rational) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + rationalCmp + (@SAWCoreScaffolding.RecordCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.rationalLe + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + SAWCoreScaffolding.rationalLt SAWCoreScaffolding.RecordNil))). + +Definition PCmpVec: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PCmp a), + PCmp (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (pa: PCmp a) + => + let var__0 + := + SAWCoreVectorsAsRocqVectors.Vec n a + in + @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq var__0) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 _2: var__0) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqVec n a + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 _2: var__0) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (vecCmp n a + (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa))) + (@SAWCoreScaffolding.RecordCons "le"%string (forall (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (fun (x y: var__0) + => + vecCmp n a + (@SAWCoreScaffolding.recordHead "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) x y + Init.Datatypes.true + ) + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (fun (x y: var__0) + => + vecCmp n a + (@SAWCoreScaffolding.recordHead "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) + x y Init.Datatypes.false + ) SAWCoreScaffolding.RecordNil))) + . + +Definition PCmpSeq: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PCmp a), + PCmp (seq n a) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PCmp a), + PCmp (seq n1 a) + ) (fun (n1: Init.Datatypes.nat) => PCmpVec n1) (fun (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PCmp a) + => + SAWCoreScaffolding.error (PCmp (SAWCorePrelude.Stream a)) + "invalid Cmp instance"%string + ) n + . + +Definition PCmpWord: forall (n: Init.Datatypes.nat), + PCmp (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqWord n) + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (bvCmp n) + (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (SAWCoreVectorsAsRocqVectors.bvule n) + (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCoreVectorsAsRocqVectors.bvult n) + SAWCoreScaffolding.RecordNil))) + . + +Definition PCmpSeqBool: forall (n: Num), PCmp (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PCmp (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) => PCmpWord n1) + (SAWCoreScaffolding.error + (PCmp (SAWCorePrelude.Stream Init.Datatypes.bool)) + "invalid Cmp instance"%string) n + . + +Definition PCmpUnit: PCmp SAWCoreScaffolding.UnitType := + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqUnit + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + unitCmp + (@SAWCoreScaffolding.RecordCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + unitLe + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil unitLt + SAWCoreScaffolding.RecordNil))). + +Definition PCmpPair: forall (a b: Type) (_1: PCmp a) (_2: PCmp b), + PCmp (SAWCoreScaffolding.PairType a b) := + fun (a b: Type) (pa: PCmp a) (pb: PCmp b) + => + let var__0 + := + @SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + in + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq (SAWCoreScaffolding.PairType a b)) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqPair a b + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)) + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (pairCmp a b var__0 + (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb))) + (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (pairLt a b var__0 + (@SAWCoreScaffolding.recordHead "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)))) + (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (pairLt a b var__0 + (@SAWCoreScaffolding.recordHead "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb))))) SAWCoreScaffolding.RecordNil))) + . + +Definition PCmpEmpty: PCmp SAWCoreScaffolding.RecordTypeNil := + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqEmpty + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + emptyCmp + (@SAWCoreScaffolding.RecordCons "le"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + emptyLe + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + emptyLt SAWCoreScaffolding.RecordNil))). + +Definition PCmpRecord: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: PCmp a) (_2: PCmp b), + PCmp (SAWCoreScaffolding.RecordTypeCons s a b) := + fun (s: Stdlib.Strings.String.string) (a b: Type) (pa: PCmp a) (pb: PCmp b) + => + let var__0 + := + @SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + in + @SAWCoreScaffolding.RecordCons "cmpEq"%string + (PEq (SAWCoreScaffolding.RecordTypeCons s a b)) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqRecord s a b + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)) + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (recordCmp s a b var__0 + (@SAWCoreScaffolding.recordHead "cmp"%string (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb))) + (@SAWCoreScaffolding.RecordCons "le"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (recordLt s a b var__0 + (@SAWCoreScaffolding.recordHead "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)))) + (@SAWCoreScaffolding.RecordCons "lt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (recordLt s a b var__0 + (@SAWCoreScaffolding.recordHead "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb))))) SAWCoreScaffolding.RecordNil))) + . + +Definition PCmpVoid: PCmp Init.Datatypes.Empty_set := + @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq Init.Datatypes.Empty_set) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: Init.Datatypes.Empty_set) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqVoid + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall + (_1 _2: Init.Datatypes.Empty_set) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set) + (_2: Init.Datatypes.bool), + Init.Datatypes.bool)) + (@SAWCoreScaffolding.RecordCons "le"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set), + Init.Datatypes.bool)) + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set), + Init.Datatypes.bool)) SAWCoreScaffolding.RecordNil))). + +Definition PCmpEither: forall (a b: Type) (_1: PCmp a) (_2: PCmp b), + PCmp (Init.Datatypes.sum a b) := + fun (a b: Type) (pa: PCmp a) (pb: PCmp b) + => + let var__0 + := + Init.Datatypes.sum a b + in + @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq var__0) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (e1 e2: var__0) + (k: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqEither a b + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + (@SAWCoreScaffolding.recordHead "cmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)) + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (e1 e2: var__0) + (k: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (fun (e1 e2: var__0) (k: Init.Datatypes.bool) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2: a) + => + @SAWCoreScaffolding.recordHead "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pa) x1 x2 k + ) (fun (_y2: b) => Init.Datatypes.true) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "cmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb) y1 y2 k + ) e2 + ) e1 + ) + (@SAWCoreScaffolding.RecordCons "le"%string (forall (e1 e2: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (fun (e1 e2: var__0) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (x2: a) + => + @SAWCoreScaffolding.recordHead "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pa)) x1 x2 + ) (fun (_y2: b) => Init.Datatypes.true) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "le"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb)) y1 y2 + ) e2 + ) e1 + ) + (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (fun (e1 e2: var__0) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (x2: a) + => + @SAWCoreScaffolding.recordHead "lt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "le"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pa))) x1 x2 + ) (fun (_y2: b) => Init.Datatypes.true) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "lt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "le"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb))) y1 y2 + ) e2 + ) e1 + ) SAWCoreScaffolding.RecordNil))) + . + +Definition PSignedCmp: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + . + +Definition PSignedCmpVec: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PSignedCmp a), + PSignedCmp (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (pa: PSignedCmp a) + => + let var__0 + := + SAWCoreVectorsAsRocqVectors.Vec n a + in + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq var__0) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: var__0) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqVec n a + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 _2: var__0) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (vecCmp n a + (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa))) + (@SAWCoreScaffolding.RecordCons "sle"%string (forall (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (fun (x y: var__0) + => + vecCmp n a + (@SAWCoreScaffolding.recordHead "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) x y + Init.Datatypes.true + ) + (@SAWCoreScaffolding.RecordCons "slt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (fun (x y: var__0) + => + vecCmp n a + (@SAWCoreScaffolding.recordHead "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) + x y Init.Datatypes.false + ) SAWCoreScaffolding.RecordNil))) + . + +Definition PSignedCmpSeq: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PSignedCmp a), + PSignedCmp (seq n a) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PSignedCmp a), + PSignedCmp (seq n1 a) + ) (fun (n1: Init.Datatypes.nat) => PSignedCmpVec n1) (fun (a: Type) + (Inh_a: SAWCoreScaffolding.Inhabited a) (pa: PSignedCmp a) + => + SAWCoreScaffolding.error (PSignedCmp (SAWCorePrelude.Stream a)) + "invalid SignedCmp instance"%string + ) n + . + +Definition PSignedCmpWord: forall (n: Init.Datatypes.nat), + PSignedCmp (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string + (PEq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqWord n) + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (bvSCmp n) + (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (SAWCoreVectorsAsRocqVectors.bvsle n) + (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCoreVectorsAsRocqVectors.bvslt n) + SAWCoreScaffolding.RecordNil))) + . + +Definition PSignedCmpSeqBool: forall (n: Num), + PSignedCmp (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PSignedCmp (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) => PSignedCmpWord n1) + (SAWCoreScaffolding.error + (PSignedCmp (SAWCorePrelude.Stream Init.Datatypes.bool)) + "invalid SignedCmp instance"%string) n + . + +Definition PSignedCmpUnit: PSignedCmp SAWCoreScaffolding.UnitType := + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string + (PEq SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqUnit + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + unitCmp + (@SAWCoreScaffolding.RecordCons "sle"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + unitLe + (@SAWCoreScaffolding.RecordCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil unitLt + SAWCoreScaffolding.RecordNil))). + +Definition PSignedCmpPair: forall (a b: Type) (_1: PSignedCmp a) (_2: + PSignedCmp b), + PSignedCmp (SAWCoreScaffolding.PairType a b) := + fun (a b: Type) (pa: PSignedCmp a) (pb: PSignedCmp b) + => + let var__0 + := + @SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + in + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string + (PEq (SAWCoreScaffolding.PairType a b)) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqPair a b + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)) + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (pairCmp a b var__0 + (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb))) + (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (pairLt a b var__0 + (@SAWCoreScaffolding.recordHead "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)))) + (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (pairLt a b var__0 + (@SAWCoreScaffolding.recordHead "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb))))) SAWCoreScaffolding.RecordNil))) + . + +Definition PSignedCmpEmpty: PSignedCmp SAWCoreScaffolding.RecordTypeNil := + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string + (PEq SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqEmpty + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + emptyCmp + (@SAWCoreScaffolding.RecordCons "sle"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + emptyLe + (@SAWCoreScaffolding.RecordCons "slt"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + emptyLt SAWCoreScaffolding.RecordNil))). + +Definition PSignedCmpRecord: forall (s: Stdlib.Strings.String.string) + (a b: Type) (_1: PSignedCmp a) (_2: PSignedCmp b), + PSignedCmp (SAWCoreScaffolding.RecordTypeCons s a b) := + fun (s: Stdlib.Strings.String.string) (a b: Type) (pa: PSignedCmp a) (pb: + PSignedCmp b) + => + let var__0 + := + @SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + in + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string + (PEq (SAWCoreScaffolding.RecordTypeCons s a b)) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqRecord s a b + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)) + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (recordCmp s a b var__0 + (@SAWCoreScaffolding.recordHead "scmp"%string (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb))) + (@SAWCoreScaffolding.RecordCons "sle"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (recordLt s a b var__0 + (@SAWCoreScaffolding.recordHead "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)))) + (@SAWCoreScaffolding.RecordCons "slt"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (recordLt s a b var__0 + (@SAWCoreScaffolding.recordHead "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb))))) SAWCoreScaffolding.RecordNil))) + . + +Definition PSignedCmpVoid: PSignedCmp Init.Datatypes.Empty_set := + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string + (PEq Init.Datatypes.Empty_set) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: Init.Datatypes.Empty_set) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + PEqVoid + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall + (_1 _2: Init.Datatypes.Empty_set) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set) + (_2: Init.Datatypes.bool), + Init.Datatypes.bool)) + (@SAWCoreScaffolding.RecordCons "sle"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set), + Init.Datatypes.bool)) + (@SAWCoreScaffolding.RecordCons "slt"%string (forall + (_1 _2: Init.Datatypes.Empty_set), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.elimVoid (forall (_1: Init.Datatypes.Empty_set), + Init.Datatypes.bool)) SAWCoreScaffolding.RecordNil))). + +Definition PSignedCmpEither: forall (a b: Type) (_1: PSignedCmp a) (_2: + PSignedCmp b), + PSignedCmp (Init.Datatypes.sum a b) := + fun (a b: Type) (pa: PSignedCmp a) (pb: PSignedCmp b) + => + let var__0 + := + Init.Datatypes.sum a b + in + @SAWCoreScaffolding.RecordCons "signedCmpEq"%string (PEq var__0) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (e1 e2: var__0) (k: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqEither a b + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa) + (@SAWCoreScaffolding.recordHead "signedCmpEq"%string (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pb)) + (@SAWCoreScaffolding.RecordCons "scmp"%string (forall (e1 e2: var__0) + (k: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (fun (e1 e2: var__0) (k: Init.Datatypes.bool) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x2: a) + => + @SAWCoreScaffolding.recordHead "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pa) x1 x2 k + ) (fun (_y2: b) => Init.Datatypes.true) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "scmp"%string (forall + (_1 _2: b) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb) y1 y2 k + ) e2 + ) e1 + ) + (@SAWCoreScaffolding.RecordCons "sle"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (fun (e1 e2: var__0) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (x2: a) + => + @SAWCoreScaffolding.recordHead "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pa)) x1 x2 + ) (fun (_y2: b) => Init.Datatypes.true) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb)) y1 y2 + ) e2 + ) e1 + ) + (@SAWCoreScaffolding.RecordCons "slt"%string (forall + (e1 e2: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (fun (e1 e2: var__0) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun (x1: a) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (x2: a) + => + @SAWCoreScaffolding.recordHead "slt"%string + (forall (_1 _2: a), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "sle"%string + (forall (_1 _2: a), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pa))) x1 x2 + ) (fun (_y2: b) => Init.Datatypes.true) e2 + ) (fun (y1: b) + => + SAWCorePrelude.either a b Init.Datatypes.bool (fun + (_x2: a) + => + Init.Datatypes.false + ) (fun (y2: b) + => + @SAWCoreScaffolding.recordHead "slt"%string + (forall (_1 _2: b), Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "sle"%string + (forall (_1 _2: b), Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string + (PEq b) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string + (forall (_1 _2: b) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string + (forall (_1 _2: b), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + pb))) y1 y2 + ) e2 + ) e1 + ) SAWCoreScaffolding.RecordNil))) + . + +Definition PZero: forall (_1: Type), Type := + fun (a: Type) + => + a + . + +Definition PZeroBit: PZero Init.Datatypes.bool := + Init.Datatypes.false. + +Definition PZeroInteger: PZero SAWCoreScaffolding.Integer := + SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero. + +Definition PZeroIntMod: forall (n: Init.Datatypes.nat), + PZero (SAWCoreScaffolding.IntMod n) := + fun (n: Init.Datatypes.nat) + => + SAWCoreScaffolding.toIntMod n + (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero) + . + +Definition PZeroRational: PZero SAWCoreScaffolding.Rational := + SAWCorePrelude.rationalZero. + +Definition PZeroIntModNum: forall (num: Num), PZero (IntModNum num) := + fun (num: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n: Num) + => + PZero (IntModNum n) + ) PZeroIntMod PZeroInteger num + . + +Definition PZeroSeq: forall (n: Num) (a: Type) (_1: PZero a), PZero (seq n a) := + fun (n: Num) (a: Type) (pa: PZero a) + => + seqConst n a pa + . + +Definition PZeroSeqBool: forall (n: Num), PZero (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PZero (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.bvNat n1 SAWCoreScaffolding.Zero + ) (SAWCorePrelude.streamConst Init.Datatypes.bool Init.Datatypes.false) + n + . + +Definition PZeroFun: forall (a b: Type) (_1: PZero b), + PZero (forall (_2: a), b) := + fun (a b: Type) (pb: PZero b) (_1: a) + => + pb + . + +Definition PLogic: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) + . + +Definition PLogicBit: PLogic Init.Datatypes.bool := + @SAWCoreScaffolding.RecordCons "logicZero"%string (PZero Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)))) + PZeroBit + (@SAWCoreScaffolding.RecordCons "and"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + Init.Datatypes.andb + (@SAWCoreScaffolding.RecordCons "or"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + Init.Datatypes.orb + (@SAWCoreScaffolding.RecordCons "xor"%string (forall + (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + Init.Datatypes.xorb + (@SAWCoreScaffolding.RecordCons "not"%string (forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + Init.Datatypes.negb SAWCoreScaffolding.RecordNil)))). + +Definition PLogicVec: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PLogic a), + PLogic (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (pa: PLogic a) + => + @SAWCoreScaffolding.RecordCons "logicZero"%string + (SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCorePrelude.replicate n a + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) pa)) + (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCorePrelude.zipWith a a a + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) pa)) n) + (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCorePrelude.zipWith a a a + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))) n) + (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil) + (SAWCorePrelude.zipWith a a a + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa)))) n) + (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.map a a + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))))) n) + SAWCoreScaffolding.RecordNil)))) + . + +Definition PLogicStream: forall (a: Type) (_1: PLogic a), + PLogic (SAWCorePrelude.Stream a) := + fun (a: Type) (pa: PLogic a) + => + @SAWCoreScaffolding.RecordCons "logicZero"%string + (SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCorePrelude.streamConst a + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) pa)) + (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCorePrelude.streamMap2 a a a + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) pa))) + (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCorePrelude.streamMap2 a a a + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa)))) + (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil) + (SAWCorePrelude.streamMap2 a a a + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))))) + (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil + (SAWCorePrelude.streamMap a a + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa)))))) SAWCoreScaffolding.RecordNil)))) + . + +Definition PLogicSeq: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PLogic a), + PLogic (seq n a) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PLogic a), + PLogic (seq n1 a) + ) (fun (n1: Init.Datatypes.nat) => PLogicVec n1) (fun (a: Type) + (Inh_a: SAWCoreScaffolding.Inhabited a) + => + PLogicStream a + ) n + . + +Definition PLogicWord: forall (n: Init.Datatypes.nat), + PLogic (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "logicZero"%string + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) + (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCorePrelude.bvAnd n) + (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) (SAWCorePrelude.bvOr n) + (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) (SAWCorePrelude.bvXor n) + (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil (SAWCorePrelude.bvNot n) + SAWCoreScaffolding.RecordNil)))) + . + +Definition PLogicSeqBool: forall (n: Num), PLogic (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PLogic (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) => PLogicWord n1) + (PLogicStream Init.Datatypes.bool PLogicBit) n + . + +Definition PLogicFun: forall (a b: Type) (_1: PLogic b), + PLogic (forall (_2: a), b) := + fun (a b: Type) (pb: PLogic b) + => + @SAWCoreScaffolding.RecordCons "logicZero"%string + (PZero (forall (_1: a), b)) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1: forall (_1: a), b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) SAWCoreScaffolding.RecordTypeNil)))) + (PZeroFun a b + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil)))) pb)) + (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1: forall (_1: a), b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) SAWCoreScaffolding.RecordTypeNil))) + (funBinary a b + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) pb))) + (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1: forall (_1: a), b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) SAWCoreScaffolding.RecordTypeNil)) + (funBinary a b + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb)))) + (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) SAWCoreScaffolding.RecordTypeNil) + (funBinary a b + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb))))) + (@SAWCoreScaffolding.RecordCons "not"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) SAWCoreScaffolding.RecordTypeNil + (compose a b b + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb)))))) SAWCoreScaffolding.RecordNil)))) + . + +Definition PLogicUnit: PLogic SAWCoreScaffolding.UnitType := + @SAWCoreScaffolding.RecordCons "logicZero"%string SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil)))) SAWCoreScaffolding.Unit + (@SAWCoreScaffolding.RecordCons "and"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil))) unitBinary + (@SAWCoreScaffolding.RecordCons "or"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil)) unitBinary + (@SAWCoreScaffolding.RecordCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil) unitBinary + (@SAWCoreScaffolding.RecordCons "not"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil unitUnary + SAWCoreScaffolding.RecordNil)))). + +Definition PLogicPair: forall (a b: Type) (_1: PLogic a) (_2: PLogic b), + PLogic (SAWCoreScaffolding.PairType a b) := + fun (a b: Type) (pa: PLogic a) (pb: PLogic b) + => + @SAWCoreScaffolding.RecordCons "logicZero"%string + (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCoreScaffolding.PairValue a b + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) pa) + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil)))) pb)) + (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil))) + (pairBinary a b + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) pa)) + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) pb))) + (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil)) + (pairBinary a b + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))) + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb)))) + (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil) + (pairBinary a b + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa)))) + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb))))) + (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil + (pairUnary a b + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))))) + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb)))))) SAWCoreScaffolding.RecordNil)))) + . + +Definition PLogicEmpty: PLogic SAWCoreScaffolding.RecordTypeNil := + @SAWCoreScaffolding.RecordCons "logicZero"%string + SAWCoreScaffolding.RecordTypeNil + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil)))) + SAWCoreScaffolding.RecordNil + (@SAWCoreScaffolding.RecordCons "and"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil))) emptyBinary + (@SAWCoreScaffolding.RecordCons "or"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil)) emptyBinary + (@SAWCoreScaffolding.RecordCons "xor"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil) emptyBinary + (@SAWCoreScaffolding.RecordCons "not"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil emptyUnary + SAWCoreScaffolding.RecordNil)))). + +Definition PLogicRecord: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: PLogic a) (_2: PLogic b), + PLogic (SAWCoreScaffolding.RecordTypeCons s a b) := + fun (s: Stdlib.Strings.String.string) (a b: Type) (pa: PLogic a) (pb: + PLogic b) + => + @SAWCoreScaffolding.RecordCons "logicZero"%string + (SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.RecordCons s a b + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) pa) + (@SAWCoreScaffolding.recordHead "logicZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil)))) pb)) + (@SAWCoreScaffolding.RecordCons "and"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil))) + (recordBinary s a b + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) pa)) + (@SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) pb))) + (@SAWCoreScaffolding.RecordCons "or"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil)) + (recordBinary s a b + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))) + (@SAWCoreScaffolding.recordHead "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb)))) + (@SAWCoreScaffolding.RecordCons "xor"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil) + (recordBinary s a b + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa)))) + (@SAWCoreScaffolding.recordHead "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb))))) + (@SAWCoreScaffolding.RecordCons "not"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil + (recordUnary s a b + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) + pa))))) + (@SAWCoreScaffolding.recordHead "not"%string (forall + (_1: b), + b) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "and"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "or"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: b), b) + SAWCoreScaffolding.RecordTypeNil)))) + pb)))))) SAWCoreScaffolding.RecordNil)))) + . + +Definition PRing: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))))) + . + +Definition PRingInteger: PRing SAWCoreScaffolding.Integer := + @SAWCoreScaffolding.RecordCons "ringZero"%string + (PZero SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) PZeroInteger + (@SAWCoreScaffolding.RecordCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + SAWCoreScaffolding.intAdd + (@SAWCoreScaffolding.RecordCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) + SAWCoreScaffolding.intSub + (@SAWCoreScaffolding.RecordCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)) + SAWCoreScaffolding.intMul + (@SAWCoreScaffolding.RecordCons "neg"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil) SAWCoreScaffolding.intNeg + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + i + ) SAWCoreScaffolding.RecordNil))))). + +Definition PRingIntMod: forall (n: Init.Datatypes.nat), + PRing (SAWCoreScaffolding.IntMod n) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string + (PZero (SAWCoreScaffolding.IntMod n)) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.IntMod n) + SAWCoreScaffolding.RecordTypeNil))))) (PZeroIntMod n) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.IntMod n) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCoreScaffolding.intModAdd n) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.IntMod n) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCoreScaffolding.intModSub n) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.IntMod n) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.intModMul n) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1: + SAWCoreScaffolding.IntMod n), + SAWCoreScaffolding.IntMod n) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.IntMod n) + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.intModNeg n) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.IntMod n) + SAWCoreScaffolding.RecordTypeNil + (SAWCoreScaffolding.toIntMod n) + SAWCoreScaffolding.RecordNil))))) + . + +Definition PRingIntModNum: forall (num: Num), PRing (IntModNum num) := + fun (num: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n: Num) + => + PRing (IntModNum n) + ) PRingIntMod PRingInteger num + . + +Definition PRingRational: PRing SAWCoreScaffolding.Rational := + @SAWCoreScaffolding.RecordCons "ringZero"%string + (PZero SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational) + SAWCoreScaffolding.RecordTypeNil))))) PZeroRational + (@SAWCoreScaffolding.RecordCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational) + SAWCoreScaffolding.RecordTypeNil)))) + SAWCoreScaffolding.rationalAdd + (@SAWCoreScaffolding.RecordCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational) + SAWCoreScaffolding.RecordTypeNil))) + SAWCoreScaffolding.rationalSub + (@SAWCoreScaffolding.RecordCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational) + SAWCoreScaffolding.RecordTypeNil)) + SAWCoreScaffolding.rationalMul + (@SAWCoreScaffolding.RecordCons "neg"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational) + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.rationalNeg + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational) + SAWCoreScaffolding.RecordTypeNil + SAWCorePrelude.integerToRational + SAWCoreScaffolding.RecordNil))))). + +Definition PRingVec: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PRing a), + PRing (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (pa: PRing a) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string + (SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil))))) + (SAWCorePrelude.replicate n a + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCorePrelude.zipWith a a a + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)) + n) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCorePrelude.zipWith a a a + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))) n) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCorePrelude.zipWith a a a + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa)))) n) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil) + (SAWCorePrelude.map a a + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) n) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n a) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + SAWCorePrelude.replicate n a + (@SAWCoreScaffolding.recordHead "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) i) + ) SAWCoreScaffolding.RecordNil))))) + . + +Definition PRingStream: forall (a: Type) (_1: PRing a), + PRing (SAWCorePrelude.Stream a) := + fun (a: Type) (pa: PRing a) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string (SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil))))) + (SAWCorePrelude.streamConst a + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCorePrelude.streamMap2 a a a + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa))) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCorePrelude.streamMap2 a a a + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa)))) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 _2: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCorePrelude.streamMap2 a a a + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1: + SAWCorePrelude.Stream a), + SAWCorePrelude.Stream a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil) + (SAWCorePrelude.streamMap a a + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa)))))) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCorePrelude.Stream a) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + SAWCorePrelude.streamConst a + (@SAWCoreScaffolding.recordHead "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) i) + ) SAWCoreScaffolding.RecordNil))))) + . + +Definition PRingSeq: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PRing a), + PRing (seq n a) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PRing a), + PRing (seq n1 a) + ) (fun (n1: Init.Datatypes.nat) => PRingVec n1) (fun (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) + => + PRingStream a + ) n + . + +Definition PRingWord: forall (n: Init.Datatypes.nat), + PRing (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))))) + (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)))) + (SAWCoreVectorsAsRocqVectors.bvAdd n) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCoreVectorsAsRocqVectors.bvSub n) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreVectorsAsRocqVectors.bvMul n) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreVectorsAsRocqVectors.bvNeg n) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (SAWCoreVectorsAsRocqVectors.intToBv n) + SAWCoreScaffolding.RecordNil))))) + . + +Definition PRingSeqBool: forall (n: Num), PRing (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PRing (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) => PRingWord n1) + (SAWCoreScaffolding.error + (PRing (SAWCorePrelude.Stream Init.Datatypes.bool)) + "PRingSeqBool: no instance for streams"%string) n + . + +Definition PRingFun: forall (a b: Type) (_1: PRing b), + PRing (forall (_2: a), b) := + fun (a b: Type) (pb: PRing b) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string + (PZero (forall (_1: a), b)) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1: forall (_1: a), b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer) (_1: a), + b) SAWCoreScaffolding.RecordTypeNil))))) + (PZeroFun a b + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))))) pb)) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1: forall (_1: a), b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer) (_1: a), + b) SAWCoreScaffolding.RecordTypeNil)))) + (funBinary a b + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))))) pb))) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1: forall (_1: a), b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer) (_1: a), + b) SAWCoreScaffolding.RecordTypeNil))) + (funBinary a b + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb)))) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1: forall + (_1: a), + b) (_2: forall (_2: a), b) (_3: a), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer) (_1: a), + b) SAWCoreScaffolding.RecordTypeNil)) + (funBinary a b + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb))))) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall + (_1: forall (_1: a), b) (_2: a), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer) (_1: a), + b) SAWCoreScaffolding.RecordTypeNil) + (compose a b b + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb)))))) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer) (_1: a), + b) SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) (_1: a) + => + @SAWCoreScaffolding.recordHead "int"%string (forall + (_2: SAWCoreScaffolding.Integer), + b) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_2: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_2: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_2: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_2: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_2: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_2 _3: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_2: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb))))) i + ) SAWCoreScaffolding.RecordNil))))) + . + +Definition PRingUnit: PRing SAWCoreScaffolding.UnitType := + @SAWCoreScaffolding.RecordCons "ringZero"%string SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil))))) + SAWCoreScaffolding.Unit + (@SAWCoreScaffolding.RecordCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil)))) unitBinary + (@SAWCoreScaffolding.RecordCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil))) unitBinary + (@SAWCoreScaffolding.RecordCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil)) unitBinary + (@SAWCoreScaffolding.RecordCons "neg"%string (forall + (_1: SAWCoreScaffolding.UnitType), + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil) unitUnary + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.UnitType) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + SAWCoreScaffolding.Unit + ) SAWCoreScaffolding.RecordNil))))). + +Definition PRingPair: forall (a b: Type) (_1: PRing a) (_2: PRing b), + PRing (SAWCoreScaffolding.PairType a b) := + fun (a b: Type) (pa: PRing a) (pb: PRing b) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string + (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil))))) + (SAWCoreScaffolding.PairValue a b + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa) + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))))) pb)) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil)))) + (pairBinary a b + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)) + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))))) pb))) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil))) + (pairBinary a b + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))) + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb)))) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil)) + (pairBinary a b + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa)))) + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb))))) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1: + SAWCoreScaffolding.PairType a b), + SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil) + (pairUnary a b + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb)))))) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.PairType a b) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + SAWCoreScaffolding.PairValue a b + (@SAWCoreScaffolding.recordHead "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) i) + (@SAWCoreScaffolding.recordHead "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + b) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb))))) i) + ) SAWCoreScaffolding.RecordNil))))) + . + +Definition PRingEmpty: PRing SAWCoreScaffolding.RecordTypeNil := + @SAWCoreScaffolding.RecordCons "ringZero"%string + SAWCoreScaffolding.RecordTypeNil + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil))))) + SAWCoreScaffolding.RecordNil + (@SAWCoreScaffolding.RecordCons "add"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil)))) emptyBinary + (@SAWCoreScaffolding.RecordCons "sub"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil))) emptyBinary + (@SAWCoreScaffolding.RecordCons "mul"%string (forall + (_1 _2: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil)) emptyBinary + (@SAWCoreScaffolding.RecordCons "neg"%string (forall + (_1: SAWCoreScaffolding.RecordTypeNil), + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil) emptyUnary + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + SAWCoreScaffolding.RecordNil + ) SAWCoreScaffolding.RecordNil))))). + +Definition PRingRecord: forall (s: Stdlib.Strings.String.string) (a b: Type) + (_1: PRing a) (_2: PRing b), + PRing (SAWCoreScaffolding.RecordTypeCons s a b) := + fun (s: Stdlib.Strings.String.string) (a b: Type) (pa: PRing a) (pb: PRing b) + => + @SAWCoreScaffolding.RecordCons "ringZero"%string + (SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil))))) + (@SAWCoreScaffolding.RecordCons s a b + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa) + (@SAWCoreScaffolding.recordHead "ringZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))))) pb)) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil)))) + (recordBinary s a b + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)) + (@SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))))) pb))) + (@SAWCoreScaffolding.RecordCons "sub"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil))) + (recordBinary s a b + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))) + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb)))) + (@SAWCoreScaffolding.RecordCons "mul"%string (forall (_1 _2: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil)) + (recordBinary s a b + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa)))) + (@SAWCoreScaffolding.recordHead "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb))))) + (@SAWCoreScaffolding.RecordCons "neg"%string (forall (_1: + SAWCoreScaffolding.RecordTypeCons s a b), + SAWCoreScaffolding.RecordTypeCons s a b) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil) + (recordUnary s a b + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) + (@SAWCoreScaffolding.recordHead "neg"%string (forall + (_1: b), + b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: b), + b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb)))))) + (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.RecordTypeCons s a b) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + @SAWCoreScaffolding.RecordCons s a b + (@SAWCoreScaffolding.recordHead "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) i) + (@SAWCoreScaffolding.recordHead "int"%string + (forall (_1: SAWCoreScaffolding.Integer), b) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + b) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero b) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: b), b) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: b), b) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + b) + SAWCoreScaffolding.RecordTypeNil))))) + pb))))) i) + ) SAWCoreScaffolding.RecordNil))))) + . + +Definition PIntegral: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "integralRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) + . + +Definition PIntegralInteger: PIntegral SAWCoreScaffolding.Integer := + @SAWCoreScaffolding.RecordCons "integralRing"%string + (PRing SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (i: SAWCoreScaffolding.Integer), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) PRingInteger + (@SAWCoreScaffolding.RecordCons "div"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (i: SAWCoreScaffolding.Integer), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil))) SAWCoreScaffolding.intDiv + (@SAWCoreScaffolding.RecordCons "mod"%string (forall + (_1 _2: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (i: SAWCoreScaffolding.Integer), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)) SAWCoreScaffolding.intMod + (@SAWCoreScaffolding.RecordCons "toInt"%string (forall + (i: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (i: SAWCoreScaffolding.Integer), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil) (fun + (i: SAWCoreScaffolding.Integer) + => + i + ) (@SAWCoreScaffolding.RecordCons "posneg"%string (forall + (i: SAWCoreScaffolding.Integer), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + if SAWCoreScaffolding.intLe + (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero) + i then + @Init.Datatypes.inl Init.Datatypes.nat + Init.Datatypes.nat (SAWCoreScaffolding.intToNat i) + else + @Init.Datatypes.inr Init.Datatypes.nat + Init.Datatypes.nat + (SAWCoreScaffolding.intToNat + (SAWCoreScaffolding.intNeg i)) + ) SAWCoreScaffolding.RecordNil)))). + +Definition posNegCases: forall (a: Type) (_1: PIntegral a) (r: Type) (_2: forall + (_2: Init.Datatypes.nat), + r) (_3: forall (_3: Init.Datatypes.nat), r) (_4: a), + r := + fun (a: Type) (p: PIntegral a) (r: Type) (pos: forall + (_1: Init.Datatypes.nat), + r) (neg: forall (_1: Init.Datatypes.nat), r) (x: a) + => + SAWCorePrelude.either Init.Datatypes.nat Init.Datatypes.nat r pos neg + (@SAWCoreScaffolding.recordHead "posneg"%string (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "toInt"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mod"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "div"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string + (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "integralRing"%string + (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string + (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) p)))) + x) + . + +Definition PIntegralWord: forall (n: Init.Datatypes.nat), + PIntegral (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) := + fun (n: Init.Datatypes.nat) + => + @SAWCoreScaffolding.RecordCons "integralRing"%string + (PRing (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool)) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (x: SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) (PRingWord n) + (@SAWCoreScaffolding.RecordCons "div"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (x: SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil))) + (SAWCoreVectorsAsRocqVectors.bvUDiv n) + (@SAWCoreScaffolding.RecordCons "mod"%string (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (x: SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreVectorsAsRocqVectors.bvURem n) + (@SAWCoreScaffolding.RecordCons "toInt"%string (forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (x: SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil) + (SAWCoreVectorsAsRocqVectors.bvToInt n) + (@SAWCoreScaffolding.RecordCons "posneg"%string (forall (x: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil (fun (x: + SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + => + @Init.Datatypes.inl Init.Datatypes.nat + Init.Datatypes.nat + (SAWCoreVectorsAsRocqVectors.bvToNat n x) + ) SAWCoreScaffolding.RecordNil)))) + . + +Definition PIntegralSeqBool: forall (n: Num), + PIntegral (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PIntegral (seq n1 Init.Datatypes.bool) + ) (fun (n1: Init.Datatypes.nat) => PIntegralWord n1) + (SAWCoreScaffolding.error + (PIntegral (SAWCorePrelude.Stream Init.Datatypes.bool)) + "PIntegralSeqBool: no instance for streams"%string) n + . + +Definition PField: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "fieldRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: a), + a) SAWCoreScaffolding.RecordTypeNil)) + . + +Definition PFieldRational: PField SAWCoreScaffolding.Rational := + @SAWCoreScaffolding.RecordCons "fieldRing"%string + (PRing SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil)) + PRingRational + (@SAWCoreScaffolding.RecordCons "recip"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil) + SAWCoreScaffolding.rationalRecip + (@SAWCoreScaffolding.RecordCons "fieldDiv"%string (forall + (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational) SAWCoreScaffolding.RecordTypeNil + SAWCorePrelude.rationalDiv SAWCoreScaffolding.RecordNil)). + +Definition PFieldIntMod: forall (n: Init.Datatypes.nat), + PField (SAWCoreScaffolding.IntMod n) := + fun (n: Init.Datatypes.nat) + => + let var__0 + := + SAWCoreScaffolding.IntMod n + in + @SAWCoreScaffolding.RecordCons "fieldRing"%string (PRing var__0) + (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (x y: var__0), + var__0) SAWCoreScaffolding.RecordTypeNil)) (PRingIntMod n) + (@SAWCoreScaffolding.RecordCons "recip"%string (forall (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (x y: var__0), + var__0) SAWCoreScaffolding.RecordTypeNil) (fun (x: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: recip IntMod"%string + ) (@SAWCoreScaffolding.RecordCons "fieldDiv"%string (forall + (x y: var__0), + var__0) SAWCoreScaffolding.RecordTypeNil (fun (x y: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: (/.) IntMod"%string + ) SAWCoreScaffolding.RecordNil)) + . + +Definition PFieldIntModNum: forall (n: Num), PField (IntModNum n) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PField (IntModNum n1) + ) PFieldIntMod + (SAWCoreScaffolding.error (PField (IntModNum TCInf)) + "PFieldIntModNum: no instance for inf"%string) n + . + +Definition PRound: forall (_1: Type), Type := + fun (a: Type) + => + SAWCoreScaffolding.RecordTypeCons "roundField"%string (PField a) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) + . + +Definition PRoundRational: PRound SAWCoreScaffolding.Rational := + @SAWCoreScaffolding.RecordCons "roundField"%string + (PField SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string + (PCmp SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) PFieldRational + (@SAWCoreScaffolding.RecordCons "roundCmp"%string + (PCmp SAWCoreScaffolding.Rational) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) PCmpRational + (@SAWCoreScaffolding.RecordCons "floor"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + SAWCoreScaffolding.rationalFloor + (@SAWCoreScaffolding.RecordCons "ceiling"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) + SAWCorePrelude.rationalCeiling + (@SAWCoreScaffolding.RecordCons "trunc"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)) + SAWCorePrelude.rationalTrunc + (@SAWCoreScaffolding.RecordCons "roundAway"%string (forall + (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil) + SAWCorePrelude.rationalRoundAway + (@SAWCoreScaffolding.RecordCons "roundToEven"%string + (forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil + SAWCorePrelude.rationalRoundToEven + SAWCoreScaffolding.RecordNil)))))). + +Definition PLiteral: forall (a: Type), Type := + fun (a: Type) + => + forall (_1: Init.Datatypes.nat), + a + . + +Definition PLiteralLessThan: forall (a: Type), Type := + fun (a: Type) + => + forall (_1: Init.Datatypes.nat), + a + . + +Definition PLiteralSeqBool: forall (n: Num), + PLiteral (seq n Init.Datatypes.bool) := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + PLiteral (seq n1 Init.Datatypes.bool) + ) SAWCoreVectorsAsRocqVectors.bvNat + (SAWCoreScaffolding.error + (PLiteral (SAWCorePrelude.Stream Init.Datatypes.bool)) + "PLiteralSeqBool: no instance for streams"%string) n + . + +Definition PLiteralBit: PLiteral Init.Datatypes.bool := + SAWCoreScaffolding.ltNat SAWCoreScaffolding.Zero. + +Definition PLiteralInteger: PLiteral SAWCoreScaffolding.Integer := + SAWCoreScaffolding.natToInt. + +Definition PLiteralIntMod: forall (n: Init.Datatypes.nat), + PLiteral (SAWCoreScaffolding.IntMod n) := + fun (n x: Init.Datatypes.nat) + => + SAWCoreScaffolding.toIntMod n (SAWCoreScaffolding.natToInt x) + . + +Definition PLiteralIntModNum: forall (num: Num), PLiteral (IntModNum num) := + fun (num: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n: Num) + => + PLiteral (IntModNum n) + ) PLiteralIntMod PLiteralInteger num + . + +Definition PLiteralRational: PLiteral SAWCoreScaffolding.Rational := + fun (x: Init.Datatypes.nat) + => + SAWCorePrelude.integerToRational (SAWCoreScaffolding.natToInt x) + . + +Definition PFLiteral: forall (a: Type), Type := + fun (a: Type) + => + forall (_1 _2 _3: Init.Datatypes.nat), + a + . + +Definition PFLiteralRational: PFLiteral SAWCoreScaffolding.Rational := + fun (m n r: Init.Datatypes.nat) + => + SAWCoreScaffolding.ratio (SAWCoreScaffolding.natToInt m) + (SAWCoreScaffolding.natToInt n) + . + +Definition ecNumber: forall (val: Num) (a: Type) (_1: PLiteral a), a := + fun (val: Num) (a: Type) (pa: PLiteral a) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (_1: Num) => a) pa + (pa SAWCoreScaffolding.Zero) val + . + +Definition ecFromZ: forall (n: Num) (_1: IntModNum n), + SAWCoreScaffolding.Integer := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: IntModNum n1), + SAWCoreScaffolding.Integer + ) SAWCoreScaffolding.fromIntMod (fun (x: SAWCoreScaffolding.Integer) + => + x + ) n + . + +Definition ecFromInteger: forall (a: Type) (_1: PRing a) + (_2: SAWCoreScaffolding.Integer), + a := + fun (a: Type) (pa: PRing a) + => + @SAWCoreScaffolding.recordHead "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) + . + +Definition ecPlus: forall (a: Type) (_1: PRing a) (_2 _3: a), a := + fun (a: Type) (pa: PRing a) + => + @SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))))) pa) + . + +Definition ecMinus: forall (a: Type) (_1: PRing a) (_2 _3: a), a := + fun (a: Type) (pa: PRing a) + => + @SAWCoreScaffolding.recordHead "sub"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)) + . + +Definition ecMul: forall (a: Type) (_1: PRing a) (_2 _3: a), a := + fun (a: Type) (pa: PRing a) + => + @SAWCoreScaffolding.recordHead "mul"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa))) + . + +Definition ecNeg: forall (a: Type) (_1: PRing a) (_2: a), a := + fun (a: Type) (pa: PRing a) + => + @SAWCoreScaffolding.recordHead "neg"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) pa)))) + . + +Definition ecToInteger: forall (a: Type) (_1: PIntegral a) (_2: a), + SAWCoreScaffolding.Integer := + fun (a: Type) (pa: PIntegral a) + => + @SAWCoreScaffolding.recordHead "toInt"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mod"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "div"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string + (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) pa))) + . + +Definition ecDiv: forall (a: Type) (_1: PIntegral a) (_2 _3: a), a := + fun (a: Type) (pi: PIntegral a) + => + @SAWCoreScaffolding.recordHead "div"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) pi) + . + +Definition ecMod: forall (a: Type) (_1: PIntegral a) (_2 _3: a), a := + fun (a: Type) (pi: PIntegral a) + => + @SAWCoreScaffolding.recordHead "mod"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "div"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string (forall + (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "integralRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string + (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) pi)) + . + +Definition ecExp: forall (a b: Type) (_1: PRing a) (_2: PIntegral b) (_3: a) + (_4: b), + a := + fun (a b: Type) (pa: PRing a) (pi: PIntegral b) (x: a) + => + posNegCases b pi a + (SAWCorePrelude.expByNat a + (@SAWCoreScaffolding.recordHead "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) + (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa)))) x) (fun (_1: Init.Datatypes.nat) + => + @SAWCoreScaffolding.recordHead "int"%string (forall + (_2: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string (forall (_2: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_2: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_2 _3: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_2: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_2 _3: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_2 _3: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_2: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_2 _3: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_2 _3: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_2 _3: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_2: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_2 _3: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_2 _3: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_2 _3: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_2: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_2: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + pa))))) + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + ) + . + +Definition ecRecip: forall (a: Type) (_1: PField a) (_2: a), a := + fun (a: Type) (pf: PField a) + => + @SAWCoreScaffolding.recordHead "recip"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: a), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "fieldRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: a), + a) SAWCoreScaffolding.RecordTypeNil)) pf) + . + +Definition ecFieldDiv: forall (a: Type) (_1: PField a) (_2 _3: a), a := + fun (a: Type) (pf: PField a) + => + @SAWCoreScaffolding.recordHead "fieldDiv"%string (forall (_1 _2: a), a) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "recip"%string (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: a), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "fieldRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (_1 _2: a), + a) SAWCoreScaffolding.RecordTypeNil)) pf)) + . + +Definition ecCeiling: forall (a: Type) (_1: PRound a) (_2: a), + SAWCoreScaffolding.Integer := + fun (a: Type) (pr: PRound a) + => + @SAWCoreScaffolding.recordHead "ceiling"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) + (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) pr))) + . + +Definition ecFloor: forall (a: Type) (_1: PRound a) (_2: a), + SAWCoreScaffolding.Integer := + fun (a: Type) (pr: PRound a) + => + @SAWCoreScaffolding.recordHead "floor"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) + (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) pr)) + . + +Definition ecTruncate: forall (a: Type) (_1: PRound a) (_2: a), + SAWCoreScaffolding.Integer := + fun (a: Type) (pr: PRound a) + => + @SAWCoreScaffolding.recordHead "trunc"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "ceiling"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) + (@SAWCoreScaffolding.recordTail "roundField"%string (PField a) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string + (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) + pr)))) + . + +Definition ecRoundAway: forall (a: Type) (_1: PRound a) (_2: a), + SAWCoreScaffolding.Integer := + fun (a: Type) (pr: PRound a) + => + @SAWCoreScaffolding.recordHead "roundAway"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "trunc"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "ceiling"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "floor"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) + (@SAWCoreScaffolding.recordTail "roundField"%string + (PField a) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string + (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) + pr))))) + . + +Definition ecRoundToEven: forall (a: Type) (_1: PRound a) (_2: a), + SAWCoreScaffolding.Integer := + fun (a: Type) (pr: PRound a) + => + @SAWCoreScaffolding.recordHead "roundToEven"%string (forall (_1: a), + SAWCoreScaffolding.Integer) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "roundAway"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "trunc"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "ceiling"%string (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "floor"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "roundCmp"%string (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) + (@SAWCoreScaffolding.recordTail "roundField"%string + (PField a) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string + (PCmp a) + (SAWCoreScaffolding.RecordTypeCons "floor"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (_1: a), + SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) + pr)))))) + . + +Definition ecLg2: forall (n: Num) (_1: seq n Init.Datatypes.bool), + seq n Init.Datatypes.bool := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: seq n1 Init.Datatypes.bool), + seq n1 Init.Datatypes.bool + ) SAWCoreVectorsAsRocqVectors.bvLg2 + (SAWCoreScaffolding.error (forall (_1: + SAWCorePrelude.Stream Init.Datatypes.bool), + SAWCorePrelude.Stream Init.Datatypes.bool) + "ecLg2: expected finite word"%string) n + . + +Definition ecSDiv: forall (n: Num) (_1 _2: seq n Init.Datatypes.bool), + seq n Init.Datatypes.bool := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1 _2: seq n1 Init.Datatypes.bool), + seq n1 Init.Datatypes.bool + ) (SAWCoreScaffolding.Nat__rec (fun (n1: Init.Datatypes.nat) + => + forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool + ) (SAWCoreScaffolding.error (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + Init.Datatypes.bool) + "ecSDiv: illegal 0-width word"%string) (fun + (n': Init.Datatypes.nat) (_1: forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n' + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.bvSDiv n' + )) + (SAWCoreScaffolding.error (forall (_1 _2: + SAWCorePrelude.Stream Init.Datatypes.bool), + SAWCorePrelude.Stream Init.Datatypes.bool) + "ecSDiv: expected finite word"%string) n + . + +Definition ecSMod: forall (n: Num) (_1 _2: seq n Init.Datatypes.bool), + seq n Init.Datatypes.bool := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1 _2: seq n1 Init.Datatypes.bool), + seq n1 Init.Datatypes.bool + ) (SAWCoreScaffolding.Nat__rec (fun (n1: Init.Datatypes.nat) + => + forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n1 Init.Datatypes.bool + ) (SAWCoreScaffolding.error (forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + Init.Datatypes.bool) + "ecSMod: illegal 0-width word"%string) (fun + (n': Init.Datatypes.nat) (_1: forall (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n' + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n' Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.bvSRem n' + )) + (SAWCoreScaffolding.error (forall (_1 _2: + SAWCorePrelude.Stream Init.Datatypes.bool), + SAWCorePrelude.Stream Init.Datatypes.bool) + "ecSMod: expected finite word"%string) n + . + +Definition toSignedInteger: forall (n: Num) (_1: seq n Init.Datatypes.bool), + SAWCoreScaffolding.Integer := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: seq n1 Init.Datatypes.bool), + SAWCoreScaffolding.Integer + ) SAWCoreVectorsAsRocqVectors.sbvToInt + (SAWCoreScaffolding.error (forall (_1: + SAWCorePrelude.Stream Init.Datatypes.bool), + SAWCoreScaffolding.Integer) + "toSignedInteger: expected finite word"%string) n + . + +Definition ecEq: forall (a: Type) (_1: PEq a) (_2 _3: a), Init.Datatypes.bool := + fun (a: Type) (pa: PEq a) + => + @SAWCoreScaffolding.recordHead "eq"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil pa + . + +Definition ecNotEq: forall (a: Type) (_1: PEq a) (_2 _3: a), + Init.Datatypes.bool := + fun (a: Type) (pa: PEq a) (x y: a) + => + Init.Datatypes.negb (ecEq a pa x y) + . + +Definition ecLt: forall (a: Type) (_1: PCmp a) (_2 _3: a), + Init.Datatypes.bool := + fun (a: Type) (pa: PCmp a) + => + @SAWCoreScaffolding.recordHead "lt"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "le"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa))) + . + +Definition ecGt: forall (a: Type) (_1: PCmp a) (_2 _3: a), + Init.Datatypes.bool := + fun (a: Type) (pa: PCmp a) (x y: a) + => + ecLt a pa y x + . + +Definition ecLtEq: forall (a: Type) (_1: PCmp a) (_2 _3: a), + Init.Datatypes.bool := + fun (a: Type) (pa: PCmp a) + => + @SAWCoreScaffolding.recordHead "le"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "cmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "cmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa)) + . + +Definition ecGtEq: forall (a: Type) (_1: PCmp a) (_2 _3: a), + Init.Datatypes.bool := + fun (a: Type) (pa: PCmp a) (x y: a) + => + ecLtEq a pa y x + . + +Definition ecSLt: forall (a: Type) (_1: PSignedCmp a) (_2 _3: a), + Init.Datatypes.bool := + fun (a: Type) (pa: PSignedCmp a) + => + @SAWCoreScaffolding.recordHead "slt"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "sle"%string (forall (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall (_1 _2: a), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "scmp"%string (forall (_1 _2: a) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "signedCmpEq"%string (PEq a) + (SAWCoreScaffolding.RecordTypeCons "scmp"%string (forall + (_1 _2: a) (_3: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "sle"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "slt"%string (forall + (_1 _2: a), + Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil))) pa))) + . + +Definition ecAnd: forall (a: Type) (_1: PLogic a) (_2 _3: a), a := + fun (a: Type) (pa: PLogic a) + => + @SAWCoreScaffolding.recordHead "and"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) pa) + . + +Definition ecOr: forall (a: Type) (_1: PLogic a) (_2 _3: a), a := + fun (a: Type) (pa: PLogic a) + => + @SAWCoreScaffolding.recordHead "or"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)))) pa)) + . + +Definition ecXor: forall (a: Type) (_1: PLogic a) (_2 _3: a), a := + fun (a: Type) (pa: PLogic a) + => + @SAWCoreScaffolding.recordHead "xor"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) pa))) + . + +Definition ecCompl: forall (a: Type) (_1: PLogic a) (_2: a), a := + fun (a: Type) (pa: PLogic a) + => + @SAWCoreScaffolding.recordHead "not"%string (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "xor"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "or"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "and"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "not"%string (forall + (_1: a), + a) SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "logicZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "and"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "or"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "xor"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "not"%string + (forall (_1: a), a) + SAWCoreScaffolding.RecordTypeNil)))) pa)))) + . + +Definition ecZero: forall (a: Type) (_1: PZero a), a := + fun (a: Type) (pa: PZero a) + => + pa + . + +Definition ecFraction: forall (m n r: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PFLiteral a), + a := + fun (m n r: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (pa: + PFLiteral a) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (_1: Num) => a) (fun + (m1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (_1: Num) => a) (fun + (n1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (_1: Num) => a) + (fun (r1: Init.Datatypes.nat) => pa m1 n1 r1) + (SAWCoreScaffolding.error a + "ecFraction: r should not be infinite"%string) r + ) (SAWCoreScaffolding.error a + "ecFraction: n should not be infinite"%string) n + ) (SAWCoreScaffolding.error a + "ecFraction: m should not be infinite"%string) m + . + +Definition ecShiftL: forall (m: Num) (ix a: Type) (_1: PIntegral ix) (_2: + PZero a) (_3: seq m a) (_4: ix), + seq m a := + fun (m: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (ix a: Type) (_1: PIntegral ix) (_2: PZero a) (_3: seq m1 a) + (_4: ix), + seq m1 a + ) (fun (m1: Init.Datatypes.nat) (ix a: Type) (pix: PIntegral ix) (pz: + PZero a) (xs: SAWCoreVectorsAsRocqVectors.Vec m1 a) + => + let var__0 + := + ecZero a pz + in + posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m1 a) + (SAWCoreVectorsAsRocqVectors.shiftL m1 a var__0 xs) + (SAWCoreVectorsAsRocqVectors.shiftR m1 a var__0 xs) + ) (fun (ix a: Type) (pix: PIntegral ix) (pz: PZero a) (xs: + SAWCorePrelude.Stream a) + => + posNegCases ix pix (SAWCorePrelude.Stream a) + (SAWCorePrelude.streamShiftL a xs) + (SAWCorePrelude.streamShiftR a pz xs) + ) m + . + +Definition ecShiftR: forall (m: Num) (ix a: Type) (_1: PIntegral ix) (_2: + PZero a) (_3: seq m a) (_4: ix), + seq m a := + fun (m: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (ix a: Type) (_1: PIntegral ix) (_2: PZero a) (_3: seq m1 a) + (_4: ix), + seq m1 a + ) (fun (m1: Init.Datatypes.nat) (ix a: Type) (pix: PIntegral ix) (pz: + PZero a) (xs: SAWCoreVectorsAsRocqVectors.Vec m1 a) + => + let var__0 + := + ecZero a pz + in + posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m1 a) + (SAWCoreVectorsAsRocqVectors.shiftR m1 a var__0 xs) + (SAWCoreVectorsAsRocqVectors.shiftL m1 a var__0 xs) + ) (fun (ix a: Type) (pix: PIntegral ix) (pz: PZero a) (xs: + SAWCorePrelude.Stream a) + => + posNegCases ix pix (SAWCorePrelude.Stream a) + (SAWCorePrelude.streamShiftR a pz xs) + (SAWCorePrelude.streamShiftL a xs) + ) m + . + +Definition ecSShiftR: forall (n: Num) (ix: Type) (_1: PIntegral ix) (_2: + seq n Init.Datatypes.bool) (_3: ix), + seq n Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (ix: Type) (_1: PIntegral ix) (_2: seq n Init.Datatypes.bool) + (_3: ix), + seq n Init.Datatypes.bool + ) (fun (n: Init.Datatypes.nat) (ix: Type) (pix: PIntegral ix) + => + SAWCorePrelude.natCase (fun (w: Init.Datatypes.nat) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec w + Init.Datatypes.bool) (_2: ix), + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool + ) (fun (xs: SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + Init.Datatypes.bool) (_1: ix) + => + xs + ) (fun (w: Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ w) + Init.Datatypes.bool) + => + let var__0 + := + SAWCoreScaffolding.Succ w + in + posNegCases ix pix + (SAWCoreVectorsAsRocqVectors.Vec var__0 Init.Datatypes.bool) + (SAWCoreVectorsAsRocqVectors.bvSShr w xs) + (SAWCoreVectorsAsRocqVectors.bvShl var__0 xs) + ) n + ). + +Definition ecRotL: forall (m: Num) (ix a: Type) (_1: PIntegral ix) (_2: seq m a) + (_3: ix), + seq m a := + finNumRec (fun (m: Num) + => + forall (ix a: Type) (_1: PIntegral ix) (_2: seq m a) (_3: ix), + seq m a + ) (fun (m: Init.Datatypes.nat) (ix a: Type) (pix: PIntegral ix) (xs: + SAWCoreVectorsAsRocqVectors.Vec m a) + => + posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m a) + (SAWCoreVectorsAsRocqVectors.rotateL m a xs) + (SAWCoreVectorsAsRocqVectors.rotateR m a xs) + ). + +Definition ecRotR: forall (m: Num) (ix a: Type) (_1: PIntegral ix) (_2: seq m a) + (_3: ix), + seq m a := + finNumRec (fun (m: Num) + => + forall (ix a: Type) (_1: PIntegral ix) (_2: seq m a) (_3: ix), + seq m a + ) (fun (m: Init.Datatypes.nat) (ix a: Type) (pix: PIntegral ix) (xs: + SAWCoreVectorsAsRocqVectors.Vec m a) + => + posNegCases ix pix (SAWCoreVectorsAsRocqVectors.Vec m a) + (SAWCoreVectorsAsRocqVectors.rotateR m a xs) + (SAWCoreVectorsAsRocqVectors.rotateL m a xs) + ). + +Definition ecCat: forall (m n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq m a) (_2: seq n a), + seq (tcAdd m n) a := + finNumRec (fun (m: Num) + => + forall (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq m a) (_2: seq n a), + seq (tcAdd m n) a + ) (fun (m: Init.Datatypes.nat) + => + CryptolPrimitivesForSAWCore.Num__rec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + SAWCoreVectorsAsRocqVectors.Vec m a) (_2: seq n a), + seq (tcAdd (TCNum m) n) a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) + => + SAWCorePrelude.append m n a + ) (fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + => + SAWCorePrelude.streamAppend a m + ) + ). + +Definition ecTake: forall (m n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq (tcAdd m n) a), + seq m a := + CryptolPrimitivesForSAWCore.Num__rec (fun (m: Num) + => + forall (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcAdd m n) a), + seq m a + ) (fun (m: Init.Datatypes.nat) + => + CryptolPrimitivesForSAWCore.Num__rec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcAdd (TCNum m) n) a), + SAWCoreVectorsAsRocqVectors.Vec m a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (xs: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat m n) a) + => + SAWCorePrelude.take a m n xs + ) (fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (xs: + SAWCorePrelude.Stream a) + => + SAWCorePrelude.streamTake a m xs + ) + ) (CryptolPrimitivesForSAWCore.Num__rec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcAdd TCInf n) a), + SAWCorePrelude.Stream a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (xs: SAWCorePrelude.Stream a) + => + xs + ) (fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (xs: + SAWCorePrelude.Stream a) + => + xs + )). + +Definition ecDrop: forall (m n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq (tcAdd m n) a), + seq n a := + finNumRec (fun (m: Num) + => + forall (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcAdd m n) a), + seq n a + ) (fun (m: Init.Datatypes.nat) + => + CryptolPrimitivesForSAWCore.Num__rec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcAdd (TCNum m) n) a), + seq n a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (xs: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat m n) a) + => + SAWCorePrelude.drop a m n xs + ) (fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (xs: + SAWCorePrelude.Stream a) + => + SAWCorePrelude.streamDrop a m xs + ) + ). + +Definition ecJoin: forall (m n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq m (seq n a)), + seq (tcMul m n) a := + fun (m: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: seq m1 (seq n a)), + seq (tcMul m1 n) a + ) (fun (m1: Init.Datatypes.nat) + => + finNumRec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + SAWCoreVectorsAsRocqVectors.Vec m1 (seq n a)), + seq (tcMul (TCNum m1) n) a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) + => + SAWCorePrelude.join m1 n a + ) + ) + (finNumRec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + SAWCorePrelude.Stream (seq n a)), + seq (tcMul TCInf n) a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) + => + SAWCorePrelude.natCase (fun (n': Init.Datatypes.nat) + => + forall (_1: SAWCorePrelude.Stream + (SAWCoreVectorsAsRocqVectors.Vec n' a)), + seq (SAWCoreScaffolding.if0Nat Num n' + (TCNum SAWCoreScaffolding.Zero) TCInf) a + ) + (fun + (s: SAWCorePrelude.Stream + (SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + a)) + => + SAWCoreVectorsAsRocqVectors.EmptyVec a + ) (fun (n': Init.Datatypes.nat) (s: + SAWCorePrelude.Stream + (SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.Succ n') a)) + => + SAWCorePrelude.streamJoin a n' s + ) n + )) m + . + +Definition ecSplit: forall (m n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq (tcMul m n) a), + seq m (seq n a) := + fun (m: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: seq (tcMul m1 n) a), + seq m1 (seq n a) + ) (fun (m1: Init.Datatypes.nat) + => + finNumRec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcMul (TCNum m1) n) a), + SAWCoreVectorsAsRocqVectors.Vec m1 (seq n a) + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) + => + SAWCorePrelude.split m1 n a + ) + ) (finNumRec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + seq (tcMul TCInf n) a), + SAWCorePrelude.Stream (seq n a) + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) + => + SAWCorePrelude.natCase (fun (n': Init.Datatypes.nat) + => + forall (_1: seq (SAWCoreScaffolding.if0Nat Num n' + (TCNum SAWCoreScaffolding.Zero) TCInf) a), + SAWCorePrelude.Stream + (SAWCoreVectorsAsRocqVectors.Vec n' a) + ) (SAWCorePrelude.streamConst + (SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + a)) (fun (n': Init.Datatypes.nat) + => + SAWCorePrelude.streamSplit a (SAWCoreScaffolding.Succ n') + ) n + )) m + . + +Definition ecReverse: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq n a), + seq n a := + finNumRec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: seq n a), + seq n a + ) SAWCorePrelude.reverse. + +Definition ecTranspose: forall (m n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: seq m (seq n a)), + seq n (seq m a) := + fun (m n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (m1: Num) + => + forall (_1: seq m1 (seq n a)), + seq n (seq m1 a) + ) (fun (m1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec m1 (seq n1 a)), + seq n1 (SAWCoreVectorsAsRocqVectors.Vec m1 a) + ) (fun (n1: Init.Datatypes.nat) + => + SAWCorePrelude.transpose m1 n1 a + ) (fun (xss: SAWCoreVectorsAsRocqVectors.Vec m1 + (SAWCorePrelude.Stream a)) + => + SAWCorePrelude.MkStream (SAWCoreVectorsAsRocqVectors.Vec m1 a) + (fun (i: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.gen m1 a (fun + (j: Init.Datatypes.nat) + => + SAWCorePrelude.streamGet a + (SAWCorePrelude.sawAt m1 + (SAWCorePrelude.Stream a) xss j) i + ) + ) + ) n + ) (@CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: SAWCorePrelude.Stream (seq n1 a)), + seq n1 (SAWCorePrelude.Stream a) + ) (fun (n1: Init.Datatypes.nat) (xss: + SAWCorePrelude.Stream + (SAWCoreVectorsAsRocqVectors.Vec n1 a)) + => + SAWCoreVectorsAsRocqVectors.gen n1 (SAWCorePrelude.Stream a) (fun + (i: Init.Datatypes.nat) + => + SAWCorePrelude.MkStream a (fun (j: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt n1 a + (SAWCorePrelude.streamGet + (SAWCoreVectorsAsRocqVectors.Vec n1 a) xss j) i + ) + ) + ) (fun (xss: SAWCorePrelude.Stream (SAWCorePrelude.Stream a)) + => + SAWCorePrelude.MkStream (SAWCorePrelude.Stream a) (fun + (i: Init.Datatypes.nat) + => + SAWCorePrelude.MkStream a (fun (j: Init.Datatypes.nat) + => + SAWCorePrelude.streamGet a + (SAWCorePrelude.streamGet + (SAWCorePrelude.Stream a) xss j) i + ) + ) + ) n) m + . + +Definition ecAt: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (ix: Type) (_1: PIntegral ix) (_2: + seq n a) (_3: ix), + a := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (ix: Type) + (_1: PIntegral ix) (_2: seq n1 a) (_3: ix), + a + ) (fun (n1: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (ix: Type) (pix: PIntegral ix) + (xs: SAWCoreVectorsAsRocqVectors.Vec n1 a) + => + posNegCases ix pix a (SAWCorePrelude.sawAt n1 a xs) (fun + (_1: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt n1 a xs SAWCoreScaffolding.Zero + ) + ) (fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (ix: Type) + (pix: PIntegral ix) (xs: SAWCorePrelude.Stream a) + => + posNegCases ix pix a (SAWCorePrelude.streamGet a xs) (fun + (_1: Init.Datatypes.nat) + => + SAWCorePrelude.streamGet a xs SAWCoreScaffolding.Zero + ) + ) n + . + +Definition ecAtBack: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (ix: Type) (_1: PIntegral ix) (_2: + seq n a) (_3: ix), + a := + fun (n: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (ix: Type) + (pix: PIntegral ix) (xs: seq n a) + => + ecAt n a ix pix (ecReverse n a xs) + . + +Definition ecFromTo: forall (first last: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcSub last first)) a := + finNumRec (fun (first: Num) + => + forall (last: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcSub last first)) a + ) (fun (first: Init.Datatypes.nat) + => + finNumRec (fun (last: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcSub last (TCNum first))) a + ) (fun (last: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PLiteral a) + => + SAWCoreVectorsAsRocqVectors.gen + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + (SAWCoreScaffolding.subNat last first)) a (fun + (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.addNat i first) + ) + ) + ). + +Definition ecFromToLessThan: forall (first bound: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PLiteralLessThan a), + seq (tcSub bound first) a := + fun (first bound: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + => + finNumRec (fun (first1: Num) + => + forall (_1: PLiteralLessThan a), + seq (tcSub bound first1) a + ) (fun (first1: Init.Datatypes.nat) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (bound1: Num) + => + forall (_1: PLiteralLessThan a), + seq (tcSub bound1 (TCNum first1)) a + ) (fun (bound1: Init.Datatypes.nat) (pa: PLiteralLessThan a) + => + SAWCoreVectorsAsRocqVectors.gen + (SAWCoreScaffolding.subNat bound1 first1) a (fun + (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.addNat i first1) + ) + ) (fun (pa: PLiteralLessThan a) + => + SAWCorePrelude.MkStream a (fun (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.addNat i first1) + ) + ) bound + ) first + . + +Definition ecFromThenTo: forall (first next last: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (len: Num) (_1 _2 _3: PLiteral a), + seq len a := + fun (first next _1: Num) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + => + finNumRec (fun (len: Num) => forall (_2 _3 _4: PLiteral a), seq len a) + (fun (len: Init.Datatypes.nat) (pa _2 _3: PLiteral a) + => + SAWCoreVectorsAsRocqVectors.gen len a (fun (i: Init.Datatypes.nat) + => + let var__0 + := + getFinNat first + in + pa (SAWCoreScaffolding.subNat + (SAWCoreScaffolding.addNat var__0 + (SAWCoreScaffolding.mulNat i (getFinNat next))) + (SAWCoreScaffolding.mulNat i var__0)) + ) + ) + . + +Definition ecFromToBy: forall (first last stride: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (tcSub last first) stride)) a := + finNumRec (fun (first: Num) + => + forall (last stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (tcSub last first) stride)) a + ) (fun (first: Init.Datatypes.nat) + => + finNumRec (fun (last: Num) + => + forall (stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (tcSub last (TCNum first)) stride)) a + ) (fun (last: Init.Datatypes.nat) + => + finNumRec (fun (stride: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (TCNum (SAWCoreScaffolding.subNat last + first)) stride)) a + ) (fun (stride: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PLiteral a) + => + SAWCoreVectorsAsRocqVectors.gen + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + (SAWCorePrelude.divNat + (SAWCoreScaffolding.subNat last first) stride)) a + (fun (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.addNat first + (SAWCoreScaffolding.mulNat i stride)) + ) + ) + ) + ). + +Definition ecFromToByLessThan: forall (first bound stride: Num) (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} (_1: PLiteralLessThan a), + seq (tcCeilDiv (tcSub bound first) stride) a := + finNumRec (fun (first: Num) + => + forall (bound stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteralLessThan a), + seq (tcCeilDiv (tcSub bound first) stride) a + ) (fun (first: Init.Datatypes.nat) + => + CryptolPrimitivesForSAWCore.Num__rec (fun (bound: Num) + => + forall (stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteralLessThan a), + seq (tcCeilDiv (tcSub bound (TCNum first)) stride) a + ) (fun (bound: Init.Datatypes.nat) + => + finNumRec (fun (stride: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: PLiteralLessThan a), + seq (tcCeilDiv + (TCNum (SAWCoreScaffolding.subNat bound first)) + stride) a + ) (fun (stride: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: + PLiteralLessThan a) + => + SAWCoreVectorsAsRocqVectors.gen + (ceilDivNat (SAWCoreScaffolding.subNat bound first) + stride) a (fun (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.addNat first + (SAWCoreScaffolding.mulNat i stride)) + ) + ) + ) (finNumRec (fun (stride: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (_1: + PLiteralLessThan a), + seq (tcCeilDiv TCInf stride) a + ) (fun (stride: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PLiteralLessThan a) + => + SAWCorePrelude.MkStream a (fun (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.addNat first + (SAWCoreScaffolding.mulNat i stride)) + ) + )) + ). + +Definition ecFromToDownBy: forall (first last stride: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (tcSub first last) stride)) a := + finNumRec (fun (first: Num) + => + forall (last stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (tcSub first last) stride)) a + ) (fun (first: Init.Datatypes.nat) + => + finNumRec (fun (last: Num) + => + forall (stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (tcSub (TCNum first) last) stride)) a + ) (fun (last: Init.Datatypes.nat) + => + finNumRec (fun (stride: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: PLiteral a), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcDiv (TCNum (SAWCoreScaffolding.subNat first + last)) stride)) a + ) (fun (stride: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PLiteral a) + => + SAWCoreVectorsAsRocqVectors.gen + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + (SAWCorePrelude.divNat + (SAWCoreScaffolding.subNat first last) stride)) a + (fun (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.subNat first + (SAWCoreScaffolding.mulNat i stride)) + ) + ) + ) + ). + +Definition ecFromToDownByGreaterThan: forall (first bound stride: Num) (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} (_1: PLiteral a), + seq (tcCeilDiv (tcSub first bound) stride) a := + finNumRec (fun (first: Num) + => + forall (bound stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteral a), + seq (tcCeilDiv (tcSub first bound) stride) a + ) (fun (first: Init.Datatypes.nat) + => + finNumRec (fun (bound: Num) + => + forall (stride: Num) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (_1: PLiteral a), + seq (tcCeilDiv (tcSub (TCNum first) bound) stride) a + ) (fun (bound: Init.Datatypes.nat) + => + finNumRec (fun (stride: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: PLiteral a), + seq (tcCeilDiv + (TCNum (SAWCoreScaffolding.subNat first bound)) + stride) a + ) (fun (stride: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (pa: PLiteral a) + => + SAWCoreVectorsAsRocqVectors.gen + (ceilDivNat (SAWCoreScaffolding.subNat first bound) + stride) a (fun (i: Init.Datatypes.nat) + => + pa (SAWCoreScaffolding.subNat first + (SAWCoreScaffolding.mulNat i stride)) + ) + ) + ) + ). + +Definition ecInfFrom: forall (a: Type) (_1: PIntegral a) (_2: a), + seq TCInf a := + fun (a: Type) (pa: PIntegral a) (x: a) + => + SAWCorePrelude.MkStream a (fun (i: Init.Datatypes.nat) + => + let var__0 + := + @SAWCoreScaffolding.recordHead "integralRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string + (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) pa + in + @SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) var__0) x + (@SAWCoreScaffolding.recordHead "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string (forall (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + var__0))))) (SAWCoreScaffolding.natToInt i)) + ) + . + +Definition ecInfFromThen: forall (a: Type) (_1: PIntegral a) (_2 _3: a), + seq TCInf a := + fun (a: Type) (pa: PIntegral a) (x y: a) + => + SAWCorePrelude.MkStream a (fun (i: Init.Datatypes.nat) + => + let var__0 + := + @SAWCoreScaffolding.recordHead "integralRing"%string (PRing a) + (SAWCoreScaffolding.RecordTypeCons "div"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mod"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "toInt"%string + (forall (_1: a), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "posneg"%string + (forall (_1: a), + Init.Datatypes.sum Init.Datatypes.nat + Init.Datatypes.nat) + SAWCoreScaffolding.RecordTypeNil)))) pa + in + @SAWCoreScaffolding.recordHead "add"%string (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))))) var__0) x + (@SAWCoreScaffolding.recordHead "mul"%string (forall (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + var__0))) + (@SAWCoreScaffolding.recordHead "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + var__0)) y x) + (@SAWCoreScaffolding.recordHead "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "neg"%string (forall + (_1: a), + a) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (_1: SAWCoreScaffolding.Integer), + a) SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordTail "mul"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), a) + SAWCoreScaffolding.RecordTypeNil)) + (@SAWCoreScaffolding.recordTail "sub"%string (forall + (_1 _2: a), + a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))) + (@SAWCoreScaffolding.recordTail "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil)))) + (@SAWCoreScaffolding.recordTail "ringZero"%string + (PZero a) + (SAWCoreScaffolding.RecordTypeCons "add"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "sub"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "mul"%string + (forall (_1 _2: a), a) + (SAWCoreScaffolding.RecordTypeCons "neg"%string + (forall (_1: a), a) + (SAWCoreScaffolding.RecordTypeCons "int"%string + (forall + (_1: SAWCoreScaffolding.Integer), + a) + SAWCoreScaffolding.RecordTypeNil))))) + var__0))))) + (SAWCoreScaffolding.natToInt i))) + ) + . + +Definition ecError: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (len: Num) (_1: + seq len (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + Init.Datatypes.bool)), + a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + => + finNumRec (fun (len: Num) + => + forall + (_1: seq len + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + Init.Datatypes.bool)), + a + ) + (fun + (len: Init.Datatypes.nat) + (msg: SAWCoreVectorsAsRocqVectors.Vec len + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error a + (SAWCoreScaffolding.appendString "encountered call to the Cryptol 'error' function: "%string + (SAWCorePrelude.bytesToString len msg)) + ) + . + +Definition ecRandom: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) + Init.Datatypes.bool), + a := + fun + (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))))) + Init.Datatypes.bool) + => + SAWCoreScaffolding.error a "Cryptol.random"%string + . + +Definition ecTrace: forall (n: Num) (a b: Type) (_1: + seq n (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + Init.Datatypes.bool)) (_2: a) (_3: b), + b := + fun (n: Num) (a b: Type) (_1: + seq n (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + Init.Datatypes.bool)) (_2: a) (x: b) + => + x + . + +Definition ecDeepseq: forall (a b: Type) (_1: PEq a) (_2: a) (_3: b), b := + fun (a b: Type) (pa: PEq a) (x: a) (y: b) + => + y + . + +Definition ecParmap: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} (n: Num) (_1: PEq b) + (_2: forall (_2: a), b) (_3: seq n a), + seq n b := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (n: Num) (pb: PEq b) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: forall (_1: a), b) (_2: seq n1 a), + seq n1 b + ) (fun (n1: Init.Datatypes.nat) (f: forall (_1: a), b) (xs: + SAWCoreVectorsAsRocqVectors.Vec n1 a) + => + SAWCorePrelude.map a b f n1 xs + ) (fun (f: forall (_1: a), b) (xs: SAWCorePrelude.Stream a) + => + SAWCoreScaffolding.error (SAWCorePrelude.Stream b) + "Unexpected infinite stream in parmap"%string + ) n + . + +Definition ecFoldl: forall (n: Num) (a b: Type) {Inh_b: + SAWCoreScaffolding.Inhabited b} (_1: forall (_1: a) (_2: b), a) + (_2: a) (_3: seq n b), + a := + fun (n: Num) (a b: Type) (Inh_b: SAWCoreScaffolding.Inhabited b) (f: forall + (_1: a) (_2: b), + a) (z: a) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: seq n1 b), + a + ) (fun (n1: Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec n1 b) + => + SAWCoreVectorsAsRocqVectors.foldl b a n1 f z xs + ) (fun (xs: SAWCorePrelude.Stream b) + => + SAWCoreScaffolding.error a + "Unexpected infinite stream in foldl"%string + ) n + . + +Definition ecFoldlPrime: forall (n: Num) (a b: Type) {Inh_b: + SAWCoreScaffolding.Inhabited b} (_1: PEq a) (_2: forall (_2: a) + (_3: b), + a) (_3: a) (_4: seq n b), + a := + fun (n: Num) (a b: Type) (Inh_b: SAWCoreScaffolding.Inhabited b) (pa: PEq a) + => + ecFoldl n a b + . + +Definition ecScanl: forall (n: Num) (a b: Type) (_1: forall (_1: a) (_2: b), a) + (_2: a) (_3: seq n b), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + n) a := + fun (n: Num) (a b: Type) (f: forall (_1: a) (_2: b), a) (z: a) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (_1: seq n1 b), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + n1) a + ) (fun (n1: Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec n1 b) + => + SAWCoreVectorsAsRocqVectors.scanl b a n1 f z xs + ) (fun (xs: SAWCorePrelude.Stream b) + => + SAWCorePreludeExtra.streamScanl b a f z xs + ) n + . + +Definition TCFloat: forall (_1 _2: Num), Type := + fun (_1 _2: Num) + => + SAWCoreScaffolding.UnitType + . + +Definition PEqFloat: forall (e p: Num), PEq (TCFloat e p) := + fun (e p: Num) + => + @SAWCoreScaffolding.RecordCons "eq"%string (forall (x y: TCFloat e p), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (fun (x y: + TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: (==) Float"%string + ) SAWCoreScaffolding.RecordNil + . + +Definition PCmpFloat: forall (e p: Num), PCmp (TCFloat e p) := + fun (e p: Num) + => + let var__0 + := + TCFloat e p + in + @SAWCoreScaffolding.RecordCons "cmpEq"%string (PEq var__0) + (SAWCoreScaffolding.RecordTypeCons "cmp"%string (forall (x y: var__0) + (k: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil))) + (PEqFloat e p) + (@SAWCoreScaffolding.RecordCons "cmp"%string (forall (x y: var__0) + (k: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "le"%string (forall + (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil)) + (fun (x y: var__0) (k: Init.Datatypes.bool) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: Cmp Float"%string + ) (@SAWCoreScaffolding.RecordCons "le"%string (forall (x y: var__0), + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) + (fun (x y: var__0) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: Cmp Float"%string + ) (@SAWCoreScaffolding.RecordCons "lt"%string (forall + (x y: var__0), + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil + (fun (x y: var__0) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: Cmp Float"%string + ) SAWCoreScaffolding.RecordNil))) + . + +Definition PZeroFloat: forall (e p: Num), PZero (TCFloat e p) := + fun (e p: Num) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: Zero Float"%string + . + +Definition PRingFloat: forall (e p: Num), PRing (TCFloat e p) := + fun (e p: Num) + => + let var__0 + := + TCFloat e p + in + @SAWCoreScaffolding.RecordCons "ringZero"%string (PZero var__0) + (SAWCoreScaffolding.RecordTypeCons "add"%string (forall (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + var__0) SAWCoreScaffolding.RecordTypeNil))))) + (PZeroFloat e p) + (@SAWCoreScaffolding.RecordCons "add"%string (forall (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "sub"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + var__0) SAWCoreScaffolding.RecordTypeNil)))) (fun + (x y: var__0) + => + SAWCoreScaffolding.error var__0 "Unimplemented: (+) Float"%string + ) (@SAWCoreScaffolding.RecordCons "sub"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "mul"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + var__0) SAWCoreScaffolding.RecordTypeNil))) (fun + (x y: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: (-) Float"%string + ) (@SAWCoreScaffolding.RecordCons "mul"%string (forall + (x y: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "neg"%string (forall + (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + var__0) SAWCoreScaffolding.RecordTypeNil)) (fun + (x y: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: (*) Float"%string + ) (@SAWCoreScaffolding.RecordCons "neg"%string (forall + (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + var__0) SAWCoreScaffolding.RecordTypeNil) (fun + (x: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: neg Float"%string + ) (@SAWCoreScaffolding.RecordCons "int"%string (forall + (i: SAWCoreScaffolding.Integer), + var__0) SAWCoreScaffolding.RecordTypeNil (fun + (i: SAWCoreScaffolding.Integer) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: toInteger Float"%string + ) SAWCoreScaffolding.RecordNil))))) + . + +Definition PFieldFloat: forall (e p: Num), PField (TCFloat e p) := + fun (e p: Num) + => + let var__0 + := + TCFloat e p + in + @SAWCoreScaffolding.RecordCons "fieldRing"%string (PRing var__0) + (SAWCoreScaffolding.RecordTypeCons "recip"%string (forall (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (x y: var__0), + var__0) SAWCoreScaffolding.RecordTypeNil)) (PRingFloat e p) + (@SAWCoreScaffolding.RecordCons "recip"%string (forall (x: var__0), + var__0) + (SAWCoreScaffolding.RecordTypeCons "fieldDiv"%string (forall + (x y: var__0), + var__0) SAWCoreScaffolding.RecordTypeNil) (fun (x: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: recip Float"%string + ) (@SAWCoreScaffolding.RecordCons "fieldDiv"%string (forall + (x y: var__0), + var__0) SAWCoreScaffolding.RecordTypeNil (fun (x y: var__0) + => + SAWCoreScaffolding.error var__0 + "Unimplemented: (/.) Float"%string + ) SAWCoreScaffolding.RecordNil)) + . + +Definition PRoundFloat: forall (e p: Num), + PRound (TCFloat e p) := + fun (e p: Num) + => + let var__0 + := + TCFloat e p + in + @SAWCoreScaffolding.RecordCons "roundField"%string (PField var__0) + (SAWCoreScaffolding.RecordTypeCons "roundCmp"%string (PCmp var__0) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))))) + (PFieldFloat e p) + (@SAWCoreScaffolding.RecordCons "roundCmp"%string (PCmp var__0) + (SAWCoreScaffolding.RecordTypeCons "floor"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))))) (PCmpFloat e p) + (@SAWCoreScaffolding.RecordCons "floor"%string (forall (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "ceiling"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)))) (fun (x: var__0) + => + SAWCoreScaffolding.error SAWCoreScaffolding.Integer + "Unimplemented: floor Float"%string + ) + (@SAWCoreScaffolding.RecordCons "ceiling"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "trunc"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil))) (fun (x: var__0) + => + SAWCoreScaffolding.error SAWCoreScaffolding.Integer + "Unimplemented: ceiling Float"%string + ) + (@SAWCoreScaffolding.RecordCons "trunc"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundAway"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil)) (fun (x: var__0) + => + SAWCoreScaffolding.error SAWCoreScaffolding.Integer + "Unimplemented: trunc Float"%string + ) + (@SAWCoreScaffolding.RecordCons "roundAway"%string (forall + (x: var__0), + SAWCoreScaffolding.Integer) + (SAWCoreScaffolding.RecordTypeCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil) (fun (x: var__0) + => + SAWCoreScaffolding.error SAWCoreScaffolding.Integer + "Unimplemented: roundAway Float"%string + ) + (@SAWCoreScaffolding.RecordCons "roundToEven"%string + (forall (x: var__0), SAWCoreScaffolding.Integer) + SAWCoreScaffolding.RecordTypeNil (fun (x: var__0) + => + SAWCoreScaffolding.error SAWCoreScaffolding.Integer + "Unimplemented: roundToEven Float"%string + ) SAWCoreScaffolding.RecordNil)))))) + . + +Definition PLiteralFloat: forall (e p: Num), PLiteral (TCFloat e p) := + fun (e p: Num) (x: Init.Datatypes.nat) + => + SAWCoreScaffolding.error (TCFloat e p) + "Unimplemented: Literal Float"%string + . + +Definition PFLiteralFloat: forall (e p: Num), PFLiteral (TCFloat e p) := + fun (e p: Num) (m n r: Init.Datatypes.nat) + => + SAWCoreScaffolding.Unit + . + +Definition ecFpNaN: forall (e p: Num), TCFloat e p := + fun (e p: Num) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpNaN"%string + . + +Definition ecFpPosInf: forall (e p: Num), TCFloat e p := + fun (e p: Num) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpPosInf"%string + . + +Definition ecFpFromBits: forall (e p: Num) (_1: + seq (tcAdd e p) Init.Datatypes.bool), + TCFloat e p := + fun (e p: Num) (_1: seq (tcAdd e p) Init.Datatypes.bool) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpFromBits"%string + . + +Definition ecFpToBits: forall (e p: Num) (_1: TCFloat e p), + seq (tcAdd e p) Init.Datatypes.bool := + fun (e p: Num) (_1: TCFloat e p) + => + SAWCoreScaffolding.error (seq (tcAdd e p) Init.Datatypes.bool) + "Unimplemented: fpToBits"%string + . + +Definition ecFpEq: forall (e p: Num) (_1 _2: TCFloat e p), + Init.Datatypes.bool := + fun (e p: Num) (_1 _2: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool "Unimplemented: =.="%string + . + +Definition ecFpAdd: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p), + TCFloat e p := + fun (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpAdd"%string + . + +Definition ecFpSub: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p), + TCFloat e p := + fun (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpSub"%string + . + +Definition ecFpMul: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p), + TCFloat e p := + fun (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpMul"%string + . + +Definition ecFpDiv: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p), + TCFloat e p := + fun (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpDiv"%string + . + +Definition ecFpToRational: forall (e p: Num) (_1: TCFloat e p), + SAWCoreScaffolding.Rational := + fun (e p: Num) (_1: TCFloat e p) + => + SAWCoreScaffolding.error SAWCoreScaffolding.Rational + "Unimplemented: fpToRational"%string + . + +Definition ecFpFromRational: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2: SAWCoreScaffolding.Rational), + TCFloat e p := + fun (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2: SAWCoreScaffolding.Rational) + => + SAWCoreScaffolding.error (TCFloat e p) + "Unimplemented: fpFromRational"%string + . + +Definition fpIsNaN: forall (e p: Num) (_1: TCFloat e p), Init.Datatypes.bool := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: fpIsNaN"%string + . + +Definition fpIsInf: forall (e p: Num) (_1: TCFloat e p), Init.Datatypes.bool := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: fpIsInf"%string + . + +Definition fpIsZero: forall (e p: Num) (_1: TCFloat e p), Init.Datatypes.bool := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: fpIsZero"%string + . + +Definition fpIsNeg: forall (e p: Num) (_1: TCFloat e p), Init.Datatypes.bool := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: fpIsNeg"%string + . + +Definition fpIsNormal: forall (e p: Num) (_1: TCFloat e p), + Init.Datatypes.bool := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: fpIsNormal"%string + . + +Definition fpIsSubnormal: forall (e p: Num) (_1: TCFloat e p), + Init.Datatypes.bool := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error Init.Datatypes.bool + "Unimplemented: fpIsSubnormal"%string + . + +Definition fpFMA: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2 _3 _4: TCFloat e p), + TCFloat e p := + fun (e p: Num) (r: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (x y z: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpFMA"%string + . + +Definition fpAbs: forall (e p: Num) (_1: TCFloat e p), TCFloat e p := + fun (e p: Num) (x: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpAbs"%string + . + +Definition fpSqrt: forall (e p: Num) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (_2: TCFloat e p), + TCFloat e p := + fun (e p: Num) (r: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + Init.Datatypes.bool) (x: TCFloat e p) + => + SAWCoreScaffolding.error (TCFloat e p) "Unimplemented: fpSqrt"%string + . + +Definition ecUpdate: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (ix: Type) (_1: PIntegral ix) (_2: + seq n a) (_3: ix) (_4: a), + seq n a := + fun (n: Num) + => + @CryptolPrimitivesForSAWCore.Num_rect (fun (n1: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (ix: Type) + (_1: PIntegral ix) (_2: seq n1 a) (_3: ix) (_4: a), + seq n1 a + ) (fun (n1: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (ix: Type) (pix: PIntegral ix) + (xs: SAWCoreVectorsAsRocqVectors.Vec n1 a) + => + posNegCases ix pix (forall (_1: a), + SAWCoreVectorsAsRocqVectors.Vec n1 a) + (SAWCorePrelude.upd n1 a xs) (fun (_1: Init.Datatypes.nat) + (_2: a) + => + xs + ) + ) (fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (ix: Type) + (pix: PIntegral ix) (xs: SAWCorePrelude.Stream a) + => + posNegCases ix pix (forall (_1: a), SAWCorePrelude.Stream a) + (SAWCorePrelude.streamUpd a xs) (fun (_1: Init.Datatypes.nat) + (_2: a) + => + xs + ) + ) n + . + +Definition ecUpdateEnd: forall (n: Num) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (ix: Type) (_1: PIntegral ix) (_2: + seq n a) (_3: ix) (_4: a), + seq n a := + finNumRec (fun (n: Num) + => + forall (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (ix: Type) + (_1: PIntegral ix) (_2: seq n a) (_3: ix) (_4: a), + seq n a + ) (fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (ix: Type) (pix: PIntegral ix) + (xs: SAWCoreVectorsAsRocqVectors.Vec n a) + => + posNegCases ix pix (forall (_1: a), + SAWCoreVectorsAsRocqVectors.Vec n a) (fun + (i: Init.Datatypes.nat) + => + SAWCorePrelude.upd n a xs + (SAWCoreScaffolding.subNat + (SAWCoreScaffolding.subNat n + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + i) + ) (fun (_1: Init.Datatypes.nat) (_2: a) => xs) + ). + +Definition ecTrunc: forall (m n: Num) (_1: seq (tcAdd m n) Init.Datatypes.bool), + seq n Init.Datatypes.bool := + finNumRec2 (fun (m n: Num) + => + forall (_1: seq (tcAdd m n) Init.Datatypes.bool), + seq n Init.Datatypes.bool + ) SAWCorePrelude.bvTrunc. + +Definition ecUExt: forall (m n: Num) (_1: seq n Init.Datatypes.bool), + seq (tcAdd m n) Init.Datatypes.bool := + finNumRec2 (fun (m n: Num) + => + forall (_1: seq n Init.Datatypes.bool), + seq (tcAdd m n) Init.Datatypes.bool + ) SAWCorePrelude.bvUExt. + +Definition ecSExt: forall (m n: Num) (_1: seq n Init.Datatypes.bool), + seq (tcAdd m n) Init.Datatypes.bool := + finNumRec2 (fun (m n: Num) + => + forall (_1: seq n Init.Datatypes.bool), + seq (tcAdd m n) Init.Datatypes.bool + ) (fun (m n: Init.Datatypes.nat) + => + SAWCorePrelude.natCase (fun (n': Init.Datatypes.nat) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec n' + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat m n') Init.Datatypes.bool + ) (fun (_1: SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.bvNat + (SAWCoreScaffolding.addNat m SAWCoreScaffolding.Zero) + SAWCoreScaffolding.Zero + ) (SAWCorePrelude.bvSExt m) n + ). + +Definition ecSgt: forall (n: Num) (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool + ) SAWCoreVectorsAsRocqVectors.bvsgt. + +Definition ecSge: forall (n: Num) (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool + ) SAWCoreVectorsAsRocqVectors.bvsge. + +Definition ecSlt: forall (n: Num) (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool + ) SAWCoreVectorsAsRocqVectors.bvslt. + +Definition ecSle: forall (n: Num) (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (_1 _2: seq n Init.Datatypes.bool), + Init.Datatypes.bool + ) SAWCoreVectorsAsRocqVectors.bvsle. + +Definition ecArrayConstant: forall (a b: Type) (_1: b), + SAWCorePrelude.Array a b := + SAWCorePrelude.arrayConstant. + +Definition ecArrayLookup: forall (a b: Type) (_1: SAWCorePrelude.Array a b) + (_2: a), + b := + SAWCorePrelude.arrayLookup. + +Definition ecArrayUpdate: forall (a b: Type) (_1: SAWCorePrelude.Array a b) + (_2: a) (_3: b), + SAWCorePrelude.Array a b := + SAWCorePrelude.arrayUpdate. + +Definition ecArrayCopy: forall (n: Num) (a: Type) (_1: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_2: + seq n Init.Datatypes.bool) (_3: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_4 _5: + seq n Init.Datatypes.bool), + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a := + finNumRec (fun (n: Num) + => + forall (a: Type) (_1: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_2: + seq n Init.Datatypes.bool) (_3: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_4 _5: + seq n Init.Datatypes.bool), + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a + ) SAWCorePrelude.arrayCopy. + +Definition ecArrayEq: forall (n: Num) (a: Type) (_1 _2: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), + Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (a: Type) (_1 _2: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a), + Init.Datatypes.bool + ) (fun (n: Init.Datatypes.nat) + => + SAWCorePrelude.arrayEq + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + ). + +Definition ecArraySet: forall (n: Num) (a: Type) (_1: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_2: + seq n Init.Datatypes.bool) (_3: a) (_4: seq n Init.Datatypes.bool), + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a := + finNumRec (fun (n: Num) + => + forall (a: Type) (_1: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_2: + seq n Init.Datatypes.bool) (_3: a) (_4: + seq n Init.Datatypes.bool), + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a + ) SAWCorePrelude.arraySet. + +Definition ecArrayRangeEq: forall (n: Num) (a: Type) (_1: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_2: + seq n Init.Datatypes.bool) (_3: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_4 _5: + seq n Init.Datatypes.bool), + Init.Datatypes.bool := + finNumRec (fun (n: Num) + => + forall (a: Type) (_1: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_2: + seq n Init.Datatypes.bool) (_3: + SAWCorePrelude.Array (seq n Init.Datatypes.bool) a) (_4 _5: + seq n Init.Datatypes.bool), + Init.Datatypes.bool + ) SAWCorePrelude.arrayRangeEq. + +Definition addNat_1: forall (n: Init.Datatypes.nat), + @Init.Logic.eq Init.Datatypes.nat + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) + (SAWCoreScaffolding.Succ n) := + SAWCoreScaffolding.Nat__rec (fun (n: Init.Datatypes.nat) + => + @Init.Logic.eq Init.Datatypes.nat + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) + (SAWCoreScaffolding.Succ n) + ) (@Init.Logic.eq_refl Init.Datatypes.nat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (fun + (n: Init.Datatypes.nat) (ih: + @Init.Logic.eq Init.Datatypes.nat + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) + (SAWCoreScaffolding.Succ n)) + => + let var__0 + := + SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n + in + let var__1 + := + SAWCoreScaffolding.Succ n + in + SAWCorePrelude.trans Init.Datatypes.nat + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) var__1) + (SAWCoreScaffolding.Succ var__0) (SAWCoreScaffolding.Succ var__1) + (SAWCoreScaffolding.eqNatAddS + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) n) + (SAWCorePrelude.eqNatSucc var__0 var__1 ih) + ). + +Definition ecPmult: forall (u v: Num) + (_1: seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + u) Init.Datatypes.bool) + (_2: seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + v) Init.Datatypes.bool), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcAdd u v)) Init.Datatypes.bool := + finNumRec2 (fun (u v: Num) + => + forall + (_1: seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + u) Init.Datatypes.bool) + (_2: seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + v) Init.Datatypes.bool), + seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (tcAdd u v)) Init.Datatypes.bool + ) (fun (u v: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) u) + Init.Datatypes.bool) (y: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) + Init.Datatypes.bool) + => + let var__0 + := + SAWCoreScaffolding.addNat u v + in + let var__1 + := + SAWCoreScaffolding.Succ var__0 + in + let var__2 + := + SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) var__0 + in + SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool var__1 var__2 + (SAWCorePrelude.sym Init.Datatypes.nat var__2 var__1 + (addNat_1 var__0)) + (SAWCorePrelude.polyMul u v + (SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + u) (SAWCoreScaffolding.Succ u) (addNat_1 u) x) + (SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + v) (SAWCoreScaffolding.Succ v) (addNat_1 v) y)) + ). + +Definition ecPmod: forall (u v: Num) (_1: seq u Init.Datatypes.bool) + (_2: seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + v) Init.Datatypes.bool), + seq v Init.Datatypes.bool := + finNumRec2 (fun (u v: Num) + => + forall (_1: seq u Init.Datatypes.bool) + (_2: seq (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + v) Init.Datatypes.bool), + seq v Init.Datatypes.bool + ) (fun (u v: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec u Init.Datatypes.bool) (y: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) + Init.Datatypes.bool) + => + SAWCorePrelude.polyMod u v x + (SAWCoreVectorsAsRocqVectors.coerceVec Init.Datatypes.bool + (SAWCoreScaffolding.addNat + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) v) + (SAWCoreScaffolding.Succ v) (addNat_1 v) y) + ). + +Definition AESEncRound: forall + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (x: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: AESEncRound"%string + . + +Definition AESEncFinalRound: forall + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (x: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: AESEncFinalRound"%string + . + +Definition AESDecRound: forall + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (x: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: AESDecRound"%string + . + +Definition AESDecFinalRound: forall + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (x: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: AESDecFinalRound"%string + . + +Definition AESInvMixColumns: forall + (_1: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (x: SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: AESInvMixColumns"%string + . + +Definition AESKeyExpand: forall (k: Num) + (_1: seq k + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)), + seq (tcMul (TCNum (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) + k)) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (k: Num) + (x: seq k + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) + => + SAWCoreScaffolding.error + (seq (tcMul (TCNum (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (tcAdd (TCNum (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) + k)) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: AESKeyExpand"%string + . + +Definition processSHA2_224: forall (n: Num) + (_1: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool))), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (n: Num) + (x: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool))) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: processSHA2_224"%string + . + +Definition processSHA2_256: forall (n: Num) + (_1: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool))), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + fun + (n: Num) + (x: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool))) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool)) "Unimplemented: processSHA2_256"%string + . + +Definition processSHA2_384: forall (n: Num) + (_1: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool))), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool) := + fun + (n: Num) + (x: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool))) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool)) "Unimplemented: processSHA2_384"%string + . + +Definition processSHA2_512: forall (n: Num) + (_1: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool))), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool) := + fun + (n: Num) + (x: seq n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool))) + => + SAWCoreScaffolding.error + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + Init.Datatypes.bool)) "Unimplemented: processSHA2_512"%string + . + +Definition ProjectivePoint: forall (_1: Num), Type := + fun (p: Num) + => + let var__0 + := + IntModNum p + in + SAWCoreScaffolding.RecordTypeCons "x"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "z"%string var__0 + SAWCoreScaffolding.RecordTypeNil)) + . + +Definition ec_double: forall (p: Num) (_1: ProjectivePoint p), + ProjectivePoint p := + fun (p: Num) (x: ProjectivePoint p) + => + SAWCoreScaffolding.error (ProjectivePoint p) + "Unimplemented: ec_double"%string + . + +Definition ec_add_nonzero: forall (p: Num) (_1 _2: ProjectivePoint p), + ProjectivePoint p := + fun (p: Num) (x y: ProjectivePoint p) + => + SAWCoreScaffolding.error (ProjectivePoint p) + "Unimplemented: ec_add_nonzero"%string + . + +Definition ec_mult: forall (p: Num) (_1: IntModNum p) (_2: ProjectivePoint p), + ProjectivePoint p := + fun (p: Num) (x: IntModNum p) (y: ProjectivePoint p) + => + SAWCoreScaffolding.error (ProjectivePoint p) + "Unimplemented: ec_mult"%string + . + +Definition ec_twin_mult: forall (p: Num) (_1: IntModNum p) (_2 _3: + ProjectivePoint p), + ProjectivePoint p := + fun (p: Num) (x: IntModNum p) (y z: ProjectivePoint p) + => + SAWCoreScaffolding.error (ProjectivePoint p) + "Unimplemented: ec_twin_mult"%string + . + +Axiom replicate_False: forall (n: Init.Datatypes.nat), + @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCorePrelude.replicate n Init.Datatypes.bool Init.Datatypes.false) + (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero). + +Axiom subNat_0: forall (n: Init.Datatypes.nat), + @Init.Logic.eq Init.Datatypes.nat + (SAWCoreScaffolding.subNat n SAWCoreScaffolding.Zero) n. + +End CryptolPrimitivesForSAWCore. diff --git a/otherTests/saw-core-rocq/test_cryptol_primitives_1.vo.log.good b/otherTests/saw-core-rocq/test_cryptol_primitives_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lambda.log.good b/otherTests/saw-core-rocq/test_lambda.log.good index 6de5b7b3c9..305ef44491 100644 --- a/otherTests/saw-core-rocq/test_lambda.log.good +++ b/otherTests/saw-core-rocq/test_lambda.log.good @@ -1,145 +1 @@ Loading file "test_lambda.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLambda_App : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - (fun (x : var__1) => let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__3 := CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__3 (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__3 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2))) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLambda_TwoArgs : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - (fun (x : var__1) (y : var__1) => let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecPlus var__1 (CryptolPrimitivesForSAWCore.PRingSeqBool var__3) x y) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLambda_Partial : forall (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - (fun (x : var__1) (y : var__1) => let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecPlus var__1 (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x y) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLambda_Nested : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - (fun (x : var__1) => let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__3 := CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__3 (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__3 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2))) ((fun (x : var__1) => let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__3 := CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecMul var__3 (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__3 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2))) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0))). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLambda_Id : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - (fun (x : var__1) => x) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). - diff --git a/otherTests/saw-core-rocq/test_lambda.saw b/otherTests/saw-core-rocq/test_lambda.saw index 2c7bc91294..2b07ef4360 100644 --- a/otherTests/saw-core-rocq/test_lambda.saw +++ b/otherTests/saw-core-rocq/test_lambda.saw @@ -1,19 +1,19 @@ // Test: Lambda abstraction, application. let f = {{ \(x : [8]) -> x + 1 }}; let t1 = {{ f 5 }}; -write_rocq_term "TestLambda_App" [] [] "" t1; +write_rocq_term "TestLambda_App" [] [] "test_lambda_1.v" t1; let g = {{ \(x : [8]) -> \(y : [8]) -> x + y }}; let t2 = {{ g 3 4 }}; -write_rocq_term "TestLambda_TwoArgs" [] [] "" t2; +write_rocq_term "TestLambda_TwoArgs" [] [] "test_lambda_2.v" t2; let t3 = {{ g 10 }}; -write_rocq_term "TestLambda_Partial" [] [] "" t3; +write_rocq_term "TestLambda_Partial" [] [] "test_lambda_3.v" t3; let h = {{ \(x : [8]) -> x * 2 }}; let t4 = {{ f (h 5) }}; -write_rocq_term "TestLambda_Nested" [] [] "" t4; +write_rocq_term "TestLambda_Nested" [] [] "test_lambda_4.v" t4; let id = {{ \(x : [8]) -> x }}; let t5 = {{ id 42 }}; -write_rocq_term "TestLambda_Id" [] [] "" t5; +write_rocq_term "TestLambda_Id" [] [] "test_lambda_5.v" t5; diff --git a/otherTests/saw-core-rocq/test_lambda_1.v.good b/otherTests/saw-core-rocq/test_lambda_1.v.good new file mode 100644 index 0000000000..b96cc7d329 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lambda_1.v.good @@ -0,0 +1,68 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLambda_App: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + (fun (x: var__1) + => + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__3 + := + CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__3 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__3 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) + ) (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_lambda_1.vo.log.good b/otherTests/saw-core-rocq/test_lambda_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lambda_2.v.good b/otherTests/saw-core-rocq/test_lambda_2.v.good new file mode 100644 index 0000000000..e177dbd50f --- /dev/null +++ b/otherTests/saw-core-rocq/test_lambda_2.v.good @@ -0,0 +1,68 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLambda_TwoArgs: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + (fun (x y: var__1) + => + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecPlus var__1 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__3) x y + ) (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2). diff --git a/otherTests/saw-core-rocq/test_lambda_2.vo.log.good b/otherTests/saw-core-rocq/test_lambda_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lambda_3.v.good b/otherTests/saw-core-rocq/test_lambda_3.v.good new file mode 100644 index 0000000000..f56d290755 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lambda_3.v.good @@ -0,0 +1,68 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLambda_Partial: forall (y: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool), + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + (fun (x y: var__1) + => + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecPlus var__1 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x y + ) (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_lambda_3.vo.log.good b/otherTests/saw-core-rocq/test_lambda_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lambda_4.v.good b/otherTests/saw-core-rocq/test_lambda_4.v.good new file mode 100644 index 0000000000..28ae894c20 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lambda_4.v.good @@ -0,0 +1,89 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLambda_Nested: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + (fun (x: var__1) + => + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__3 + := + CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__3 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__3 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) + ) ((fun (x: var__1) + => + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__3 + := + CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecMul var__3 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__2) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__3 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) + ) (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0))). diff --git a/otherTests/saw-core-rocq/test_lambda_4.vo.log.good b/otherTests/saw-core-rocq/test_lambda_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lambda_5.v.good b/otherTests/saw-core-rocq/test_lambda_5.v.good new file mode 100644 index 0000000000..cca955d150 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lambda_5.v.good @@ -0,0 +1,54 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLambda_Id: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + (fun (x: var__1) + => + x + ) (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)). diff --git a/otherTests/saw-core-rocq/test_lambda_5.vo.log.good b/otherTests/saw-core-rocq/test_lambda_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists.log.good b/otherTests/saw-core-rocq/test_lists.log.good new file mode 100644 index 0000000000..d0eb1b5105 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists.log.good @@ -0,0 +1 @@ +Loading file "test_lists.saw" diff --git a/otherTests/saw-core-rocq/test_lists.saw b/otherTests/saw-core-rocq/test_lists.saw new file mode 100644 index 0000000000..916f901ac7 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists.saw @@ -0,0 +1,32 @@ +// Test list literals. +let xs1 = {{ [] : [0][8] }}; +write_rocq_term "TestList_empty" [] [] "test_lists_1.v" xs1; + +let xs2 = {{ [1] : [1][8] }}; +write_rocq_term "TestList_one" [] [] "test_lists_2.v" xs2; + +let xs3 = {{ [1, 2] : [2][8] }}; +write_rocq_term "TestList_two" [] [] "test_lists_3.v" xs3; + +let xs4 = {{ [1, 2, 3, 4] : [4][8] }}; +write_rocq_term "TestList_four" [] [] "test_lists_4.v" xs4; + +let xslong = {{ + [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 ] : [50][8] +}}; +write_rocq_term "TestList_long" [] [] "test_lists_5.v" xslong; + +let xs2d = {{ + [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ] : [3][3][8] +}}; +write_rocq_term "TestList_2d" [] [] "test_lists_6.v" xs2d; + +let xs2dlong = {{ [xslong, xslong, xslong] }}; +write_rocq_term "TestList_2dlong" [] [] "test_lists_7.v" xs2dlong; + + + \ No newline at end of file diff --git a/otherTests/saw-core-rocq/test_lists_1.v.good b/otherTests/saw-core-rocq/test_lists_1.v.good new file mode 100644 index 0000000000..5c1eeda548 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_1.v.good @@ -0,0 +1,34 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_empty: + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + [ + + ]. diff --git a/otherTests/saw-core-rocq/test_lists_1.vo.log.good b/otherTests/saw-core-rocq/test_lists_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists_2.v.good b/otherTests/saw-core-rocq/test_lists_2.v.good new file mode 100644 index 0000000000..53887ab862 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_2.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_one: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) + ]. diff --git a/otherTests/saw-core-rocq/test_lists_2.vo.log.good b/otherTests/saw-core-rocq/test_lists_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists_3.v.good b/otherTests/saw-core-rocq/test_lists_3.v.good new file mode 100644 index 0000000000..fcdaa746d6 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_3.v.good @@ -0,0 +1,59 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_two: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_lists_3.vo.log.good b/otherTests/saw-core-rocq/test_lists_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists_4.v.good b/otherTests/saw-core-rocq/test_lists_4.v.good new file mode 100644 index 0000000000..676c708fe3 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_4.v.good @@ -0,0 +1,72 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_four: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_lists_4.vo.log.good b/otherTests/saw-core-rocq/test_lists_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists_5.v.good b/otherTests/saw-core-rocq/test_lists_5.v.good new file mode 100644 index 0000000000..b21e8c756a --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_5.v.good @@ -0,0 +1,436 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_long: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_lists_5.vo.log.good b/otherTests/saw-core-rocq/test_lists_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists_6.v.good b/otherTests/saw-core-rocq/test_lists_6.v.good new file mode 100644 index 0000000000..f8c4aea9b9 --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_6.v.good @@ -0,0 +1,105 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_2d: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool)) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + [ + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2 + ]; + [ + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2 + ]; + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__1 var__2 + ] + ]. diff --git a/otherTests/saw-core-rocq/test_lists_6.vo.log.good b/otherTests/saw-core-rocq/test_lists_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_lists_7.v.good b/otherTests/saw-core-rocq/test_lists_7.v.good new file mode 100644 index 0000000000..6b4b4bbf9a --- /dev/null +++ b/otherTests/saw-core-rocq/test_lists_7.v.good @@ -0,0 +1,448 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestList_2dlong: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool)) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + ] + in + [ + var__3; + var__3; + var__3 + ]. diff --git a/otherTests/saw-core-rocq/test_lists_7.vo.log.good b/otherTests/saw-core-rocq/test_lists_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals.log.good b/otherTests/saw-core-rocq/test_literals.log.good index 912e120b39..890e0346ad 100644 --- a/otherTests/saw-core-rocq/test_literals.log.good +++ b/otherTests/saw-core-rocq/test_literals.log.good @@ -1,402 +1 @@ Loading file "test_literals.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestString_Empty : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - []. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestString_Basic : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__4 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__6 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__7 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__8 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__5; var__4; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__7; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__6; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__4; var__7; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__5; var__4; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestString_Escapes : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__4 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__6 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__7 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__8 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__9 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__10 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__11 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__12 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2 in - let var__13 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) var__1 var__2 in - let var__14 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - [var__10; var__11; var__5; var__3; var__4; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__10; var__12; var__11; var__5; var__3; var__4; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__9; var__7; var__7; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__13; var__12; var__11; var__5; var__3; var__4; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__13; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__9; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__14; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__14; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__5; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__4]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestString_Punct : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__4 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__6 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__7 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__8 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__9 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__10 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2 in - let var__11 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__3; var__9; var__9; var__5; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__4; var__6; var__5; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__9; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__11; var__11; var__6; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__10; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__5; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__7; var__4; var__10; var__4; var__8; var__3; var__7; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__8; var__4; var__9; var__3; var__10; var__7; var__8; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestString_Mathy : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__4 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - let var__6 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2 in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__5; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; var__5; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; var__4; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; var__6; var__6; var__6; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestString_Accent : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Max64 : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) in - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_0254 (u1295 : Type) {Inh_u1295 : SAWCoreScaffolding.Inhabited u1295} (_P : CryptolPrimitivesForSAWCore.PLiteral u1295) : u1295 := - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) u1295 _P. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Bin : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Oct : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Hex1 : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Hex2 : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Poly1 (u1301 : CryptolPrimitivesForSAWCore.Num) : CryptolPrimitivesForSAWCore.seq u1301 Init.Datatypes.bool := - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) (CryptolPrimitivesForSAWCore.seq u1301 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool u1301). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestLit_Poly2 (u1303 : CryptolPrimitivesForSAWCore.Num) : CryptolPrimitivesForSAWCore.seq u1303 Init.Datatypes.bool := - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) (CryptolPrimitivesForSAWCore.seq u1303 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool u1303). - diff --git a/otherTests/saw-core-rocq/test_literals.saw b/otherTests/saw-core-rocq/test_literals.saw index 4def43a8a7..762943c794 100644 --- a/otherTests/saw-core-rocq/test_literals.saw +++ b/otherTests/saw-core-rocq/test_literals.saw @@ -1,49 +1,49 @@ // Test: Literals. let t1 = {{ "" }}; -write_rocq_term "TestString_Empty" [] [] "" t1; +write_rocq_term "TestString_Empty" [] [] "test_literals_1.v" t1; let t2 = {{ "The quick brown fox jumps over the lazy dog" }}; -write_rocq_term "TestString_Basic" [] [] "" t2; +write_rocq_term "TestString_Basic" [] [] "test_literals_2.v" t2; let t3 = {{ "\"Line 1\"\nLine 2\tTabbed\r\nLine 3\rpath\\to\\file" }}; -write_rocq_term "TestString_Escapes" [] [] "" t3; +write_rocq_term "TestString_Escapes" [] [] "test_literals_3.v" t3; let t4 = {{ "Hello, world! (--what?) No; it's a test. At least: [b] {c}" }}; -write_rocq_term "TestString_Punct" [] [] "" t4; +write_rocq_term "TestString_Punct" [] [] "test_literals_4.v" t4; let t5 = {{ "1 + 2^6 <= n_2, 5 - 3@2# => 2 * 999 / 4% & y | ~x" }}; -write_rocq_term "TestString_Mathy" [] [] "" t5; +write_rocq_term "TestString_Mathy" [] [] "test_literals_5.v" t5; let t6 = {{ "café" }}; -write_rocq_term "TestString_Accent" [] [] "" t6; +write_rocq_term "TestString_Accent" [] [] "test_literals_6.v" t6; let t7 = {{ 0xFFFFFFFFFFFFFFFF : [64] }}; -write_rocq_term "TestLit_Max64" [] [] "" t7; +write_rocq_term "TestLit_Max64" [] [] "test_literals_7.v" t7; // Decimal literal let t8 = {{ 0254 }}; -write_rocq_term "TestLit_0254" [] [] "" t8; +write_rocq_term "TestLit_0254" [] [] "test_literals_8.v" t8; // Binary literal let t9 = {{ 0b11111110 }}; -write_rocq_term "TestLit_Bin" [] [] "" t9; +write_rocq_term "TestLit_Bin" [] [] "test_literals_9.v" t9; // Octal literal let t10 = {{ 0o376 }}; -write_rocq_term "TestLit_Oct" [] [] "" t10; +write_rocq_term "TestLit_Oct" [] [] "test_literals_10.v" t10; // Hexadecimal literal let t11 = {{ 0xFE }}; -write_rocq_term "TestLit_Hex1" [] [] "" t11; +write_rocq_term "TestLit_Hex1" [] [] "test_literals_11.v" t11; // Hexadecimal literal let t12 = {{ 0xfe }}; -write_rocq_term "TestLit_Hex2" [] [] "" t12; +write_rocq_term "TestLit_Hex2" [] [] "test_literals_12.v" t12; // : [7], equal to 0b1010111 let t13 = {{ <| x^^6 + x^^4 + x^^2 + x^^1 + 1 |> }}; -write_rocq_term "TestLit_Poly1" [] [] "" t13; +write_rocq_term "TestLit_Poly1" [] [] "test_literals_13.v" t13; // : [5], equal to 0b11010 let t14 = {{ <| x^^4 + x^^3 + x |> }}; -write_rocq_term "TestLit_Poly2" [] [] "" t14; +write_rocq_term "TestLit_Poly2" [] [] "test_literals_14.v" t14; diff --git a/otherTests/saw-core-rocq/test_literals_1.v.good b/otherTests/saw-core-rocq/test_literals_1.v.good new file mode 100644 index 0000000000..1352198924 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_1.v.good @@ -0,0 +1,34 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestString_Empty: + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + [ + + ]. diff --git a/otherTests/saw-core-rocq/test_literals_1.vo.log.good b/otherTests/saw-core-rocq/test_literals_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_10.v.good b/otherTests/saw-core-rocq/test_literals_10.v.good new file mode 100644 index 0000000000..c98240dc3e --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_10.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Oct: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). diff --git a/otherTests/saw-core-rocq/test_literals_10.vo.log.good b/otherTests/saw-core-rocq/test_literals_10.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_11.v.good b/otherTests/saw-core-rocq/test_literals_11.v.good new file mode 100644 index 0000000000..f8f365cd0f --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_11.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Hex1: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). diff --git a/otherTests/saw-core-rocq/test_literals_11.vo.log.good b/otherTests/saw-core-rocq/test_literals_11.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_12.v.good b/otherTests/saw-core-rocq/test_literals_12.v.good new file mode 100644 index 0000000000..e8134a29df --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_12.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Hex2: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). diff --git a/otherTests/saw-core-rocq/test_literals_12.vo.log.good b/otherTests/saw-core-rocq/test_literals_12.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_13.v.good b/otherTests/saw-core-rocq/test_literals_13.v.good new file mode 100644 index 0000000000..eb40e39cc0 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_13.v.good @@ -0,0 +1,36 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Poly1 + (u1301: CryptolPrimitivesForSAWCore.Num) + : CryptolPrimitivesForSAWCore.seq u1301 Init.Datatypes.bool := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + (CryptolPrimitivesForSAWCore.seq u1301 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool u1301). diff --git a/otherTests/saw-core-rocq/test_literals_13.vo.log.good b/otherTests/saw-core-rocq/test_literals_13.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_14.v.good b/otherTests/saw-core-rocq/test_literals_14.v.good new file mode 100644 index 0000000000..ed1502a90d --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_14.v.good @@ -0,0 +1,34 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Poly2 + (u1303: CryptolPrimitivesForSAWCore.Num) + : CryptolPrimitivesForSAWCore.seq u1303 Init.Datatypes.bool := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + (CryptolPrimitivesForSAWCore.seq u1303 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool u1303). diff --git a/otherTests/saw-core-rocq/test_literals_14.vo.log.good b/otherTests/saw-core-rocq/test_literals_14.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_2.v.good b/otherTests/saw-core-rocq/test_literals_2.v.good new file mode 100644 index 0000000000..1c5be6b919 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_2.v.good @@ -0,0 +1,373 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestString_Basic: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__4 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__6 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__7 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__8 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__5; + var__4; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__7; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__6; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__4; + var__7; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__5; + var__4; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_literals_2.vo.log.good b/otherTests/saw-core-rocq/test_literals_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_3.v.good b/otherTests/saw-core-rocq/test_literals_3.v.good new file mode 100644 index 0000000000..4ad938ff69 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_3.v.good @@ -0,0 +1,339 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestString_Escapes: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__4 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__6 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__7 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__8 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__9 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__10 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__11 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__12 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2 + in + let var__13 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))) + var__1 var__2 + in + let var__14 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + [ + var__10; + var__11; + var__5; + var__3; + var__4; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__10; + var__12; + var__11; + var__5; + var__3; + var__4; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__9; + var__7; + var__7; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__13; + var__12; + var__11; + var__5; + var__3; + var__4; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__13; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__9; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__14; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__14; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__5; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__4 + ]. diff --git a/otherTests/saw-core-rocq/test_literals_3.vo.log.good b/otherTests/saw-core-rocq/test_literals_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_4.v.good b/otherTests/saw-core-rocq/test_literals_4.v.good new file mode 100644 index 0000000000..2071b6b612 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_4.v.good @@ -0,0 +1,417 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestString_Punct: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__4 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__6 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__7 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__8 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__9 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__10 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + in + let var__11 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__3; + var__9; + var__9; + var__5; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__4; + var__6; + var__5; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__9; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__11; + var__11; + var__6; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__10; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__5; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__7; + var__4; + var__10; + var__4; + var__8; + var__3; + var__7; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__8; + var__4; + var__9; + var__3; + var__10; + var__7; + var__8; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_literals_4.vo.log.good b/otherTests/saw-core-rocq/test_literals_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_5.v.good b/otherTests/saw-core-rocq/test_literals_5.v.good new file mode 100644 index 0000000000..94f36ffa96 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_5.v.good @@ -0,0 +1,344 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestString_Mathy: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__4 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + let var__6 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__5; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + var__5; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + var__4; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + var__6; + var__6; + var__6; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_literals_5.vo.log.good b/otherTests/saw-core-rocq/test_literals_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_6.v.good b/otherTests/saw-core-rocq/test_literals_6.v.good new file mode 100644 index 0000000000..8f5849c4d5 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_6.v.good @@ -0,0 +1,93 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestString_Accent: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_literals_6.vo.log.good b/otherTests/saw-core-rocq/test_literals_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_7.v.good b/otherTests/saw-core-rocq/test_literals_7.v.good new file mode 100644 index 0000000000..c6b7591fb1 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_7.v.good @@ -0,0 +1,112 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Max64: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + in + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). diff --git a/otherTests/saw-core-rocq/test_literals_7.vo.log.good b/otherTests/saw-core-rocq/test_literals_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_8.v.good b/otherTests/saw-core-rocq/test_literals_8.v.good new file mode 100644 index 0000000000..656dace4d3 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_8.v.good @@ -0,0 +1,38 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_0254 + (u1295: Type) + {Inh_u1295: SAWCoreScaffolding.Inhabited u1295} + (_P: CryptolPrimitivesForSAWCore.PLiteral u1295) + : u1295 := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + u1295 _P. diff --git a/otherTests/saw-core-rocq/test_literals_8.vo.log.good b/otherTests/saw-core-rocq/test_literals_8.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_literals_9.v.good b/otherTests/saw-core-rocq/test_literals_9.v.good new file mode 100644 index 0000000000..1f348119b9 --- /dev/null +++ b/otherTests/saw-core-rocq/test_literals_9.v.good @@ -0,0 +1,50 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestLit_Bin: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0). diff --git a/otherTests/saw-core-rocq/test_literals_9.vo.log.good b/otherTests/saw-core-rocq/test_literals_9.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_offline_rocq.log.good b/otherTests/saw-core-rocq/test_offline_rocq.log.good index 90abf9f6ee..0b38e1dd65 100644 --- a/otherTests/saw-core-rocq/test_offline_rocq.log.good +++ b/otherTests/saw-core-rocq/test_offline_rocq.log.good @@ -1,175 +1 @@ Loading file "test_offline_rocq.saw" -=== test_offline_rocq1_prove0.v === - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - -Definition Op_zezezg (a : Init.Datatypes.bool) (b : Init.Datatypes.bool) : Init.Datatypes.bool := - if a then b else Init.Datatypes.true. - - - -Definition goal : Prop := - forall (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), forall (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.PRingSeqBool var__0 in - SAWCorePrelude.EqTrue (Op_zezezg (CryptolPrimitivesForSAWCore.ecEq var__1 var__2 x y) (CryptolPrimitivesForSAWCore.ecEq var__1 var__2 (CryptolPrimitivesForSAWCore.ecPlus var__1 var__3 x y) (CryptolPrimitivesForSAWCore.ecPlus var__1 var__3 x x))). - -=== test_offline_rocq2_prove0.v === - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition goal : Prop := - forall (a : Init.Datatypes.bool), forall (b : Init.Datatypes.bool), forall (c : Init.Datatypes.bool), SAWCorePrelude.EqTrue (CryptolPrimitivesForSAWCore.ecEq Init.Datatypes.bool CryptolPrimitivesForSAWCore.PEqBit (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit a b) (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit a c)) (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit a (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit b c))). - -=== test_offline_rocq3_prove0.v === - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition goal : Prop := - forall (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool), forall (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool), forall (z : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool), let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PRingSeqBool var__0 in - SAWCorePrelude.EqTrue (CryptolPrimitivesForSAWCore.ecEq var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 x y) z) (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 x (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 y z))). - -=== test_offline_rocq4_prove0.v === - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition goal : Prop := - forall (b : Init.Datatypes.bool), forall (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), forall (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - SAWCorePrelude.EqTrue (CryptolPrimitivesForSAWCore.ecEq var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) (if b then x else y) (if CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit b then y else x)). - -=== test_offline_rocq5_prove0.v === - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition goal : Prop := - forall (x : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), forall (y : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool), let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - SAWCorePrelude.EqTrue (CryptolPrimitivesForSAWCore.ecEq (CryptolPrimitivesForSAWCore.seq var__2 var__1) (CryptolPrimitivesForSAWCore.PEqSeq var__2 var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0)) [x; y] (CryptolPrimitivesForSAWCore.ecReverse var__2 var__1 [y; x])). - -=== test_offline_rocq6_prove0.v === - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - -Definition Op_zezezg (a : Init.Datatypes.bool) (b : Init.Datatypes.bool) : Init.Datatypes.bool := - if a then b else Init.Datatypes.true. - - - -Definition goal : Prop := - forall (a : Init.Datatypes.bool), forall (b : Init.Datatypes.bool), forall (c : Init.Datatypes.bool), SAWCorePrelude.EqTrue (Op_zezezg (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool CryptolPrimitivesForSAWCore.PLogicBit (Op_zezezg a b) (Op_zezezg b c)) (Op_zezezg a c)). - diff --git a/otherTests/saw-core-rocq/test_offline_rocq.postprocess.sh b/otherTests/saw-core-rocq/test_offline_rocq.postprocess.sh deleted file mode 100755 index c907ed8da9..0000000000 --- a/otherTests/saw-core-rocq/test_offline_rocq.postprocess.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -# Postprocess script for test_offline_rocq. Outputs the SAW execution output -# followed by the generated Rocq files. - -cat -for file in test_offline_rocq*_prove*.v; do - if [ -f "$file" ]; then - echo "=== $file ===" - cat "$file" - echo - fi -done diff --git a/otherTests/saw-core-rocq/test_offline_rocq.saw b/otherTests/saw-core-rocq/test_offline_rocq.saw index c2da129a78..1020f976a9 100644 --- a/otherTests/saw-core-rocq/test_offline_rocq.saw +++ b/otherTests/saw-core-rocq/test_offline_rocq.saw @@ -1,12 +1,12 @@ // Test: offline_rocq command. -prove_print (offline_rocq "test_offline_rocq1") {{ \(x:[8]) (y:[8]) -> x == y ==> x+y == x+x }}; +prove_print (offline_rocq "test_offline_rocq_1") {{ \(x:[8]) (y:[8]) -> x == y ==> x+y == x+x }}; -prove_print (offline_rocq "test_offline_rocq2") {{ \(a:Bit) (b:Bit) (c:Bit) -> (a && b) || (a && c) == a && (b || c) }}; +prove_print (offline_rocq "test_offline_rocq_2") {{ \(a:Bit) (b:Bit) (c:Bit) -> (a && b) || (a && c) == a && (b || c) }}; -prove_print (offline_rocq "test_offline_rocq3") {{ \(x:[16]) (y:[16]) (z:[16]) -> (x + y) + z == x + (y + z) }}; +prove_print (offline_rocq "test_offline_rocq_3") {{ \(x:[16]) (y:[16]) (z:[16]) -> (x + y) + z == x + (y + z) }}; -prove_print (offline_rocq "test_offline_rocq4") {{ \(b:Bit) (x:[8]) (y:[8]) -> (if b then x else y) == (if ~b then y else x) }}; +prove_print (offline_rocq "test_offline_rocq_4") {{ \(b:Bit) (x:[8]) (y:[8]) -> (if b then x else y) == (if ~b then y else x) }}; -prove_print (offline_rocq "test_offline_rocq5") {{ \(x:[8]) (y:[8]) -> [x, y] == reverse [y, x] }}; +prove_print (offline_rocq "test_offline_rocq_5") {{ \(x:[8]) (y:[8]) -> [x, y] == reverse [y, x] }}; -prove_print (offline_rocq "test_offline_rocq6") {{ \(a:Bit) (b:Bit) (c:Bit) -> (a ==> b) && (b ==> c) ==> (a ==> c) }}; +prove_print (offline_rocq "test_offline_rocq_6") {{ \(a:Bit) (b:Bit) (c:Bit) -> (a ==> b) && (b ==> c) ==> (a ==> c) }}; diff --git a/otherTests/saw-core-rocq/test_offline_rocq_1_prove0.v.good b/otherTests/saw-core-rocq/test_offline_rocq_1_prove0.v.good new file mode 100644 index 0000000000..70fc66e5d4 --- /dev/null +++ b/otherTests/saw-core-rocq/test_offline_rocq_1_prove0.v.good @@ -0,0 +1,61 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + +Definition Op_zezezg (a b: Init.Datatypes.bool) : Init.Datatypes.bool := + if a then + b + else + Init.Datatypes.true. + + + +Definition goal: Prop := + forall (x y: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool), + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PEqSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.PRingSeqBool var__0 + in + SAWCorePrelude.EqTrue + (Op_zezezg (CryptolPrimitivesForSAWCore.ecEq var__1 var__2 x y) + (CryptolPrimitivesForSAWCore.ecEq var__1 var__2 + (CryptolPrimitivesForSAWCore.ecPlus var__1 var__3 x y) + (CryptolPrimitivesForSAWCore.ecPlus var__1 var__3 x x))). diff --git a/otherTests/saw-core-rocq/test_offline_rocq_1_prove0.vo.log.good b/otherTests/saw-core-rocq/test_offline_rocq_1_prove0.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_offline_rocq_2_prove0.v.good b/otherTests/saw-core-rocq/test_offline_rocq_2_prove0.v.good new file mode 100644 index 0000000000..dacde7e687 --- /dev/null +++ b/otherTests/saw-core-rocq/test_offline_rocq_2_prove0.v.good @@ -0,0 +1,37 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition goal: Prop := + forall (a b c: Init.Datatypes.bool), + SAWCorePrelude.EqTrue + (CryptolPrimitivesForSAWCore.ecEq Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PEqBit + (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit a b) + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit a c)) + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit a + (CryptolPrimitivesForSAWCore.ecOr Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit b c))). diff --git a/otherTests/saw-core-rocq/test_offline_rocq_2_prove0.vo.log.good b/otherTests/saw-core-rocq/test_offline_rocq_2_prove0.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_offline_rocq_3_prove0.v.good b/otherTests/saw-core-rocq/test_offline_rocq_3_prove0.v.good new file mode 100644 index 0000000000..a0aa03a20d --- /dev/null +++ b/otherTests/saw-core-rocq/test_offline_rocq_3_prove0.v.good @@ -0,0 +1,56 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition goal: Prop := + forall + (x y z: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool), + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PRingSeqBool var__0 + in + SAWCorePrelude.EqTrue + (CryptolPrimitivesForSAWCore.ecEq var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) + (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 + (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 x y) z) + (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 x + (CryptolPrimitivesForSAWCore.ecPlus var__1 var__2 y z))). diff --git a/otherTests/saw-core-rocq/test_offline_rocq_3_prove0.vo.log.good b/otherTests/saw-core-rocq/test_offline_rocq_3_prove0.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_offline_rocq_4_prove0.v.good b/otherTests/saw-core-rocq/test_offline_rocq_4_prove0.v.good new file mode 100644 index 0000000000..86f7dd442f --- /dev/null +++ b/otherTests/saw-core-rocq/test_offline_rocq_4_prove0.v.good @@ -0,0 +1,54 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition goal: Prop := + forall (b: Init.Datatypes.bool) (x y: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool), + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + SAWCorePrelude.EqTrue + (CryptolPrimitivesForSAWCore.ecEq var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) (if b then + x + else + y) (if + CryptolPrimitivesForSAWCore.ecCompl Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit b then + y + else + x)). diff --git a/otherTests/saw-core-rocq/test_offline_rocq_4_prove0.vo.log.good b/otherTests/saw-core-rocq/test_offline_rocq_4_prove0.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_offline_rocq_5_prove0.v.good b/otherTests/saw-core-rocq/test_offline_rocq_5_prove0.v.good new file mode 100644 index 0000000000..ed5e3fbb4b --- /dev/null +++ b/otherTests/saw-core-rocq/test_offline_rocq_5_prove0.v.good @@ -0,0 +1,54 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition goal: Prop := + forall (x y: CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool), + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + SAWCorePrelude.EqTrue + (CryptolPrimitivesForSAWCore.ecEq + (CryptolPrimitivesForSAWCore.seq var__2 var__1) + (CryptolPrimitivesForSAWCore.PEqSeq var__2 var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0)) [x; y] + (CryptolPrimitivesForSAWCore.ecReverse var__2 var__1 [y; x])). diff --git a/otherTests/saw-core-rocq/test_offline_rocq_5_prove0.vo.log.good b/otherTests/saw-core-rocq/test_offline_rocq_5_prove0.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_offline_rocq_6_prove0.v.good b/otherTests/saw-core-rocq/test_offline_rocq_6_prove0.v.good new file mode 100644 index 0000000000..015eb31256 --- /dev/null +++ b/otherTests/saw-core-rocq/test_offline_rocq_6_prove0.v.good @@ -0,0 +1,35 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + +Definition Op_zezezg (a b: Init.Datatypes.bool) : Init.Datatypes.bool := + if a then + b + else + Init.Datatypes.true. + + + +Definition goal: Prop := + forall (a b c: Init.Datatypes.bool), + SAWCorePrelude.EqTrue + (Op_zezezg + (CryptolPrimitivesForSAWCore.ecAnd Init.Datatypes.bool + CryptolPrimitivesForSAWCore.PLogicBit (Op_zezezg a b) + (Op_zezezg b c)) (Op_zezezg a c)). diff --git a/otherTests/saw-core-rocq/test_offline_rocq_6_prove0.vo.log.good b/otherTests/saw-core-rocq/test_offline_rocq_6_prove0.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_prelude.log.good b/otherTests/saw-core-rocq/test_prelude.log.good index a5d9f1615e..a4ee91b153 100644 --- a/otherTests/saw-core-rocq/test_prelude.log.good +++ b/otherTests/saw-core-rocq/test_prelude.log.good @@ -1,1259 +1 @@ Loading file "test_prelude.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) - - -(** Code generated by saw-core-rocq *) - -Module SAWCorePrelude. - -(* "Prelude::id@core" was skipped *) - -(* "Prelude::fix@core" was skipped *) - -(* "Prelude::sawLet@core" was skipped *) - -(* Prelude::UnitType was skipped *) - -(* "Prelude::UnitType__rec@core" was skipped *) - -(* Prelude::PairType was skipped *) - -Definition pair_example : forall (a : Type), forall (b : Type), forall (_1 : a), forall (_2 : b), SAWCoreScaffolding.PairType a b := - fun (a : Type) (b : Type) (x : a) (y : b) => SAWCoreScaffolding.PairValue a b x y. - -(* "Prelude::Pair__rec@core" was skipped *) - -Definition Pair_fst : forall (a : Type), forall (b : Type), forall (_1 : SAWCoreScaffolding.PairType a b), a := - fun (a : Type) (b : Type) => SAWCoreScaffolding.Pair__rec a b (fun (p : SAWCoreScaffolding.PairType a b) => a) (fun (x : a) (y : b) => x). - -Definition Pair_snd : forall (a : Type), forall (b : Type), forall (_1 : SAWCoreScaffolding.PairType a b), b := - fun (a : Type) (b : Type) => SAWCoreScaffolding.Pair__rec a b (fun (p : SAWCoreScaffolding.PairType a b) => b) (fun (x : a) (y : b) => y). - -(* "Prelude::fst@core" was skipped *) - -(* "Prelude::snd@core" was skipped *) - -Definition uncurry : forall (a : Type), forall (b : Type), forall (c : Type), forall (f : forall (_1 : a), forall (_2 : b), c), forall (_1 : SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)), c := - fun (a : Type) (b : Type) (c : Type) (f : forall (_1 : a), forall (_2 : b), c) (x : SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) => f (Pair_fst a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x) (Pair_fst b SAWCoreScaffolding.UnitType (Pair_snd a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x)). - -Inductive PairType1 (a : Type) (b : Type) : Type := -| PairValue1 : forall (_1 : a), forall (_2 : b), PairType1 a b -. - -Definition fstPairType1 : forall (a : Type), forall (b : Type), forall (_1 : PairType1 a b), a := - fun (a : Type) (b : Type) => @SAWCorePrelude.PairType1_rect a b (fun (_1 : PairType1 a b) => a) (fun (x : a) (y : b) => x). - -Definition sndPairType1 : forall (a : Type), forall (b : Type), forall (_1 : PairType1 a b), b := - fun (a : Type) (b : Type) => @SAWCorePrelude.PairType1_rect a b (fun (_1 : PairType1 a b) => b) (fun (x : a) (y : b) => y). - -Definition uncurry1 : forall (a : Type), forall (b : Type), forall (c : Type), forall (f : forall (_1 : a), forall (_2 : b), c), forall (x : PairType1 a b), c := - fun (a : Type) (b : Type) (c : Type) (f : forall (_1 : a), forall (_2 : b), c) (x : PairType1 a b) => f (fstPairType1 a b x) (sndPairType1 a b x). - -(* "Prelude::String@core" was skipped *) - -(* "Prelude::error@core" was skipped *) - -(* Prelude::Void was skipped *) - -Definition elimVoid : forall (a : Type), forall (_1 : Init.Datatypes.Empty_set), a := - fun (a : Type) (v : Init.Datatypes.Empty_set) => @Init.Datatypes.Empty_set_rect (fun (_1 : Init.Datatypes.Empty_set) => a) v. - -(* Prelude::Eq was skipped *) - -(* "Prelude::Eq__rec@core" was skipped *) - -(* "Prelude::uip@core" was skipped *) - -Definition eq_cong : forall (t : Type), forall (x : t), forall (y : t), forall (_1 : @Init.Logic.eq t x y), forall (u : Type), forall (f : forall (_2 : t), u), @Init.Logic.eq u (f x) (f y) := - fun (t : Type) (x : t) (y : t) (eq : @Init.Logic.eq t x y) (u : Type) (f : forall (_1 : t), u) => SAWCoreScaffolding.Eq__rec t x (fun (y' : t) (eq' : @Init.Logic.eq t x y') => @Init.Logic.eq u (f x) (f y')) (@Init.Logic.eq_refl u (f x)) y eq. - -Definition sym : forall (a : Type), forall (x : a), forall (y : a), forall (_1 : @Init.Logic.eq a x y), @Init.Logic.eq a y x := - fun (a : Type) (x : a) (y : a) (eq : @Init.Logic.eq a x y) => SAWCoreScaffolding.Eq__rec a x (fun (y' : a) (eq' : @Init.Logic.eq a x y') => @Init.Logic.eq a y' x) (@Init.Logic.eq_refl a x) y eq. - -Definition trans : forall (a : Type), forall (x : a), forall (y : a), forall (z : a), forall (_1 : @Init.Logic.eq a x y), forall (_2 : @Init.Logic.eq a y z), @Init.Logic.eq a x z := - fun (a : Type) (x : a) (y : a) (z : a) (eq1 : @Init.Logic.eq a x y) (eq2 : @Init.Logic.eq a y z) => SAWCoreScaffolding.Eq__rec a y (fun (y' : a) (eq' : @Init.Logic.eq a y y') => @Init.Logic.eq a x y') eq1 z eq2. - -Definition trans2 : forall (a : Type), forall (x : a), forall (y : a), forall (z : a), forall (_1 : @Init.Logic.eq a x z), forall (_2 : @Init.Logic.eq a y z), @Init.Logic.eq a x y := - fun (a : Type) (x : a) (y : a) (z : a) (eq1 : @Init.Logic.eq a x z) (eq2 : @Init.Logic.eq a y z) => trans a x z y eq1 (sym a y z eq2). - -Definition trans4 : forall (a : Type), forall (w : a), forall (x : a), forall (y : a), forall (z : a), forall (_1 : @Init.Logic.eq a w x), forall (_2 : @Init.Logic.eq a x y), forall (_3 : @Init.Logic.eq a y z), @Init.Logic.eq a w z := - fun (a : Type) (w : a) (x : a) (y : a) (z : a) (eq1 : @Init.Logic.eq a w x) (eq2 : @Init.Logic.eq a x y) (eq3 : @Init.Logic.eq a y z) => trans a w x z eq1 (trans a x y z eq2 eq3). - -Definition eq_inv_map : forall (a : Type), forall (b : Type), forall (a1 : a), forall (a2 : a), forall (_1 : @Init.Logic.eq a a1 a2), forall (f1 : forall (_2 : a), b), forall (f2 : forall (_2 : a), b), forall (_2 : @Init.Logic.eq b (f1 a2) (f2 a2)), @Init.Logic.eq b (f1 a1) (f2 a1) := - fun (a : Type) (b : Type) (a1 : a) (a2 : a) (eq_a : @Init.Logic.eq a a1 a2) (f1 : forall (_1 : a), b) (f2 : forall (_1 : a), b) (eq_f : @Init.Logic.eq b (f1 a2) (f2 a2)) => let var__0 := f1 a2 in - let var__1 := f2 a1 in - trans b (f1 a1) var__0 var__1 (eq_cong a a1 a2 eq_a b f1) (trans b var__0 (f2 a2) var__1 eq_f (eq_cong a a2 a1 (sym a a1 a2 eq_a) b f2)). - -Inductive EqDep (t : Type) (P : forall (_1 : t), Type) (x : t) (p : P x) : forall (y : t), forall (_1 : P y), Prop := -| ReflDep : EqDep t P x p x p -. - -(* "Prelude::fix_unfold@core" was skipped *) - -Definition inverse_eta_rule : forall (a : Type), forall (b : Type), forall (f : forall (_1 : a), b), forall (g : forall (_1 : a), b), forall (_1 : @Init.Logic.eq (forall (_1 : a), b) f g), forall (x : a), @Init.Logic.eq b (f x) (g x) := - fun (a : Type) (b : Type) (f : forall (_1 : a), b) (g : forall (_1 : a), b) (H : @Init.Logic.eq (forall (_1 : a), b) f g) => SAWCoreScaffolding.Eq__rec (forall (_1 : a), b) f (fun (g' : forall (_1 : a), b) (H' : @Init.Logic.eq (forall (_1 : a), b) f g') => forall (x : a), @Init.Logic.eq b (f x) (g' x)) (fun (x : a) => @Init.Logic.eq_refl b (f x)) g H. - -(* "Prelude::unsafeAssert@core" was skipped *) - -(* "Prelude::coerce@core" was skipped *) - -(* "Prelude::coerce__def@core" was skipped *) - -(* "Prelude::coerce__eq@core" was skipped *) - -Definition coerce_same : forall (a : Type), forall (q : @Init.Logic.eq Type a a), forall (x : a), @Init.Logic.eq a (SAWCoreScaffolding.coerce a a q x) x := - fun (a : Type) (q : @Init.Logic.eq Type a a) (x : a) => let var__0 := @Init.Logic.eq Type a a in - let var__1 := @Init.Logic.eq_refl Type a in - trans a (SAWCoreScaffolding.coerce a a q x) (SAWCoreScaffolding.coerce a a q x) x (eq_cong (forall (a1 : Type), forall (b : Type), forall (_1 : @Init.Logic.eq Type a1 b), forall (_2 : a1), b) SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce eq_refl a (fun (f : forall (a1 : Type), forall (b : Type), forall (_1 : @Init.Logic.eq Type a1 b), forall (_2 : a1), b) => f a a q x)) (eq_cong var__0 q var__1 (UIP Type a a q var__1) a (fun (q' : var__0) => SAWCoreScaffolding.coerce a a q' x)). - -Definition coerce__def_trans : forall (a : Type), forall (b : Type), forall (c : Type), forall (pf1 : @Init.Logic.eq Type a b), forall (pf2 : @Init.Logic.eq Type b c), forall (x : a), @Init.Logic.eq c (SAWCoreScaffolding.coerce b c pf2 (SAWCoreScaffolding.coerce a b pf1 x)) (SAWCoreScaffolding.coerce a c (trans Type a b c pf1 pf2) x) := - fun (a : Type) (b : Type) (c : Type) (pf1 : @Init.Logic.eq Type a b) (pf2 : @Init.Logic.eq Type b c) (x : a) => SAWCoreScaffolding.Eq__rec Type b (fun (c' : Type) (pf2' : @Init.Logic.eq Type b c') => @Init.Logic.eq c' (SAWCoreScaffolding.coerce b c' pf2' (SAWCoreScaffolding.coerce a b pf1 x)) (SAWCoreScaffolding.coerce a c' (trans Type a b c' pf1 pf2') x)) (@Init.Logic.eq_refl b (SAWCoreScaffolding.coerce a b pf1 x)) c pf2. - -Definition coerce_trans : forall (a : Type), forall (b : Type), forall (c : Type), forall (pf1 : @Init.Logic.eq Type a b), forall (pf2 : @Init.Logic.eq Type b c), forall (x : a), @Init.Logic.eq c (SAWCoreScaffolding.coerce b c pf2 (SAWCoreScaffolding.coerce a b pf1 x)) (SAWCoreScaffolding.coerce a c (trans Type a b c pf1 pf2) x) := - fun (a : Type) (b : Type) (c : Type) (pf1 : @Init.Logic.eq Type a b) (pf2 : @Init.Logic.eq Type b c) (x : a) => let var__0 := trans Type a b c pf1 pf2 in - trans4 c (SAWCoreScaffolding.coerce b c pf2 (SAWCoreScaffolding.coerce a b pf1 x)) (SAWCoreScaffolding.coerce b c pf2 (SAWCoreScaffolding.coerce a b pf1 x)) (SAWCoreScaffolding.coerce a c var__0 x) (SAWCoreScaffolding.coerce a c var__0 x) (eq_cong (forall (t : Type), forall (u : Type), forall (_1 : @Init.Logic.eq Type t u), forall (_2 : t), u) SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce eq_refl c (fun (f : forall (a1 : Type), forall (b1 : Type), forall (_1 : @Init.Logic.eq Type a1 b1), forall (_2 : a1), b1) => f b c pf2 (f a b pf1 x))) (coerce__def_trans a b c pf1 pf2 x) (eq_cong (forall (t : Type), forall (u : Type), forall (_1 : @Init.Logic.eq Type t u), forall (_2 : t), u) SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce (sym (forall (t : Type), forall (u : Type), forall (_1 : @Init.Logic.eq Type t u), forall (_2 : t), u) SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce eq_refl) c (fun (f : forall (a1 : Type), forall (b1 : Type), forall (_1 : @Init.Logic.eq Type a1 b1), forall (_2 : a1), b1) => f a c var__0 x)). - -Definition rcoerce : forall (a : Type), forall (b : Type), forall (_1 : @Init.Logic.eq Type a b), forall (_2 : b), a := - fun (a : Type) (b : Type) (q : @Init.Logic.eq Type a b) => SAWCoreScaffolding.coerce b a (sym Type a b q). - -Definition rcoerce_same : forall (a : Type), forall (q : @Init.Logic.eq Type a a), forall (x : a), @Init.Logic.eq a (rcoerce a a q x) x := - fun (a : Type) (q : @Init.Logic.eq Type a a) (x : a) => coerce_same a (sym Type a a q) x. - -(* "Prelude::unsafeCoerce@core" was skipped *) - -(* "Prelude::unsafeCoerce_same@core" was skipped *) - -Definition piCong0 : forall (r : Type), forall (x : Type), forall (y : Type), forall (_1 : @Init.Logic.eq Type x y), @Init.Logic.eq Type (forall (_2 : x), r) (forall (_2 : y), r) := - fun (r : Type) (x : Type) (y : Type) (eq : @Init.Logic.eq Type x y) => SAWCoreScaffolding.Eq__rec Type x (fun (y' : Type) (eq' : @Init.Logic.eq Type x y') => @Init.Logic.eq Type (forall (_1 : x), r) (forall (_1 : y'), r)) (@Init.Logic.eq_refl Type (forall (_1 : x), r)) y eq. - -Definition piCong1 : forall (r : Type), forall (x : Type), forall (y : Type), forall (_1 : @Init.Logic.eq Type x y), @Init.Logic.eq Type (forall (_2 : r), x) (forall (_2 : r), y) := - fun (r : Type) (x : Type) (y : Type) (eq : @Init.Logic.eq Type x y) => SAWCoreScaffolding.Eq__rec Type x (fun (y' : Type) (eq' : @Init.Logic.eq Type x y') => @Init.Logic.eq Type (forall (_1 : r), x) (forall (_1 : r), y')) (@Init.Logic.eq_refl Type (forall (_1 : r), x)) y eq. - -Definition PairValue_fst_snd : forall (a : Type), forall (b : Type), forall (x : SAWCoreScaffolding.PairType a b), @Init.Logic.eq (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairValue a b (Pair_fst a b x) (Pair_snd a b x)) x := - fun (a : Type) (b : Type) => @SAWCoreScaffolding.PairType_rect a b (fun (x : SAWCoreScaffolding.PairType a b) => @Init.Logic.eq (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairValue a b (Pair_fst a b x) (Pair_snd a b x)) x) (fun (x1 : a) (x2 : b) => @Init.Logic.eq_refl (SAWCoreScaffolding.PairType a b) (SAWCoreScaffolding.PairValue a b x1 x2)). - -Definition PairValue_fst_Unit : forall (a : Type), forall (x : SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType), @Init.Logic.eq (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType (Pair_fst a SAWCoreScaffolding.UnitType x) SAWCoreScaffolding.Unit) x := - fun (a : Type) => @SAWCoreScaffolding.PairType_rect a SAWCoreScaffolding.UnitType (fun (x : SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) => @Init.Logic.eq (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType (Pair_fst a SAWCoreScaffolding.UnitType x) SAWCoreScaffolding.Unit) x) (fun (x1 : a) => @SAWCoreScaffolding.UnitType_rect (fun (u : SAWCoreScaffolding.UnitType) => @Init.Logic.eq (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType x1 SAWCoreScaffolding.Unit) (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType x1 u)) (@Init.Logic.eq_refl (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType x1 SAWCoreScaffolding.Unit))). - -(* Prelude::EmptyType was skipped *) - -(* "Prelude::EmptyType__rec@core" was skipped *) - -(* Prelude::RecordType was skipped *) - -(* "Prelude::RecordType__rec@core" was skipped *) - -(* "Prelude::headRecord@core" was skipped *) - -(* "Prelude::tailRecord@core" was skipped *) - -Definition headRecord_RecordValue : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (x : a), forall (y : b), @Init.Logic.eq a (@SAWCoreScaffolding.recordHead s a b (@SAWCoreScaffolding.RecordCons s a b x y)) x := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (x : a) (y : b) => @Init.Logic.eq_refl a x. - -Definition tailRecord_RecordValue : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (x : a), forall (y : b), @Init.Logic.eq b (@SAWCoreScaffolding.recordTail s a b (@SAWCoreScaffolding.RecordCons s a b x y)) y := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) (x : a) (y : b) => @Init.Logic.eq_refl b y. - -Definition RecordValue_head_tail : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (b : Type), forall (x : SAWCoreScaffolding.RecordTypeCons s a b), @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a b) (@SAWCoreScaffolding.RecordCons s a b (@SAWCoreScaffolding.recordHead s a b x) (@SAWCoreScaffolding.recordTail s a b x)) x := - fun (s : Stdlib.Strings.String.string) (a : Type) (b : Type) => @SAWCoreScaffolding.RecordTypeCons_rect s a b (fun (x : SAWCoreScaffolding.RecordTypeCons s a b) => @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a b) (@SAWCoreScaffolding.RecordCons s a b (@SAWCoreScaffolding.recordHead s a b x) (@SAWCoreScaffolding.recordTail s a b x)) x) (fun (x1 : a) (x2 : b) => @Init.Logic.eq_refl (SAWCoreScaffolding.RecordTypeCons s a b) (@SAWCoreScaffolding.RecordCons s a b x1 x2)). - -Definition RecordValue_head_Empty : forall (s : Stdlib.Strings.String.string), forall (a : Type), forall (x : SAWCoreScaffolding.RecordTypeCons s a SAWCoreScaffolding.RecordTypeNil), @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons s a SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordHead s a SAWCoreScaffolding.RecordTypeNil x) SAWCoreScaffolding.RecordNil) x := - fun (s : Stdlib.Strings.String.string) (a : Type) => @SAWCoreScaffolding.RecordTypeCons_rect s a SAWCoreScaffolding.RecordTypeNil (fun (x : SAWCoreScaffolding.RecordTypeCons s a SAWCoreScaffolding.RecordTypeNil) => @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons s a SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordHead s a SAWCoreScaffolding.RecordTypeNil x) SAWCoreScaffolding.RecordNil) x) (fun (x1 : a) => @SAWCoreScaffolding.RecordTypeNil_rect (fun (u : SAWCoreScaffolding.RecordTypeNil) => @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons s a SAWCoreScaffolding.RecordTypeNil x1 SAWCoreScaffolding.RecordNil) (@SAWCoreScaffolding.RecordCons s a SAWCoreScaffolding.RecordTypeNil x1 u)) (@Init.Logic.eq_refl (SAWCoreScaffolding.RecordTypeCons s a SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons s a SAWCoreScaffolding.RecordTypeNil x1 SAWCoreScaffolding.RecordNil))). - -(* Prelude::Bool was skipped *) - -(* "Prelude::iteDep@core" was skipped *) - -(* "Prelude::iteDep_True@core" was skipped *) - -(* "Prelude::iteDep_False@core" was skipped *) - -(* "Prelude::ite@core" was skipped *) - -(* "Prelude::ite_eq_iteDep@core" was skipped *) - -Definition ite_true : forall (a : Type), forall (x : a), forall (y : a), @Init.Logic.eq a (if Init.Datatypes.true then x else y) x := - fun (a : Type) (x : a) (y : a) => trans a (if Init.Datatypes.true then x else y) (SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => a) Init.Datatypes.true x y) x (SAWCoreScaffolding.ite_eq_iteDep a Init.Datatypes.true x y) (SAWCoreScaffolding.iteDep_True (fun (_1 : Init.Datatypes.bool) => a) x y). - -Definition ite_false : forall (a : Type), forall (x : a), forall (y : a), @Init.Logic.eq a (if Init.Datatypes.false then x else y) y := - fun (a : Type) (x : a) (y : a) => trans a (if Init.Datatypes.false then x else y) (SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => a) Init.Datatypes.false x y) y (SAWCoreScaffolding.ite_eq_iteDep a Init.Datatypes.false x y) (SAWCoreScaffolding.iteDep_False (fun (_1 : Init.Datatypes.bool) => a) x y). - -Definition iteWithProof : forall (a : Type), forall (b : Init.Datatypes.bool), forall (_1 : forall (_1 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), a), forall (_2 : forall (_2 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.false), a), a := - fun (a : Type) (b : Init.Datatypes.bool) (f1 : forall (_1 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), a) (f2 : forall (_1 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.false), a) => SAWCoreScaffolding.iteDep (fun (b1 : Init.Datatypes.bool) => forall (_1 : @Init.Logic.eq Init.Datatypes.bool b b1), a) b f1 f2 (@Init.Logic.eq_refl Init.Datatypes.bool b). - -Definition ifWithProof : forall (a : Type), forall (b : Init.Datatypes.bool), forall (_1 : a), forall (_2 : forall (_2 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), a), a := - fun (a : Type) (b : Init.Datatypes.bool) (x : a) (f : forall (_1 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), a) => iteWithProof a b f (fun (_1 : @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.false) => x). - -(* "Prelude::not@core" was skipped *) - -(* "Prelude::and@core" was skipped *) - -(* "Prelude::or@core" was skipped *) - -(* "Prelude::xor@core" was skipped *) - -(* "Prelude::boolEq@core" was skipped *) - -(* "Prelude::not__eq@core" was skipped *) - -(* "Prelude::and__eq@core" was skipped *) - -(* "Prelude::or__eq@core" was skipped *) - -(* "Prelude::xor__eq@core" was skipped *) - -(* "Prelude::boolEq__eq@core" was skipped *) - -Definition implies : forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool := - fun (a : Init.Datatypes.bool) (b : Init.Datatypes.bool) => Init.Datatypes.orb (Init.Datatypes.negb a) b. - -Definition implies__eq : forall (a : Init.Datatypes.bool), forall (b : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (implies a b) (Init.Datatypes.orb (Init.Datatypes.negb a) b) := - fun (a : Init.Datatypes.bool) (b : Init.Datatypes.bool) => @Init.Logic.eq_refl Init.Datatypes.bool (implies a b). - -Definition unitEq : forall (_1 : SAWCoreScaffolding.UnitType), forall (_2 : SAWCoreScaffolding.UnitType), Init.Datatypes.bool := - fun (_1 : SAWCoreScaffolding.UnitType) (_2 : SAWCoreScaffolding.UnitType) => Init.Datatypes.true. - -Definition pairEq : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool), forall (_2 : forall (_2 : b), forall (_3 : b), Init.Datatypes.bool), forall (_3 : SAWCoreScaffolding.PairType a b), forall (_4 : SAWCoreScaffolding.PairType a b), Init.Datatypes.bool := - fun (a : Type) (b : Type) (f : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (g : forall (_1 : b), forall (_2 : b), Init.Datatypes.bool) (x : SAWCoreScaffolding.PairType a b) (y : SAWCoreScaffolding.PairType a b) => Init.Datatypes.andb (f (Pair_fst a b x) (Pair_fst a b y)) (g (Pair_snd a b x) (Pair_snd a b y)). - -Definition not_True : @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.true) Init.Datatypes.false := - trans Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.true) (if Init.Datatypes.true then Init.Datatypes.false else Init.Datatypes.true) Init.Datatypes.false (SAWCoreScaffolding.not__eq Init.Datatypes.true) (ite_true Init.Datatypes.bool Init.Datatypes.false Init.Datatypes.true). - -Definition not_False : @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true := - trans Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.false) (if Init.Datatypes.false then Init.Datatypes.false else Init.Datatypes.true) Init.Datatypes.true (SAWCoreScaffolding.not__eq Init.Datatypes.false) (ite_false Init.Datatypes.bool Init.Datatypes.false Init.Datatypes.true). - -Definition not_not : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb (Init.Datatypes.negb x)) x := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - let var__1 := Init.Datatypes.negb Init.Datatypes.false in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb (Init.Datatypes.negb b)) b) x (trans Init.Datatypes.bool (Init.Datatypes.negb var__0) var__1 Init.Datatypes.true (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True Init.Datatypes.bool Init.Datatypes.negb) not_False) (trans Init.Datatypes.bool (Init.Datatypes.negb var__1) var__0 Init.Datatypes.false (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true not_False Init.Datatypes.bool Init.Datatypes.negb) not_True). - -Definition and_True1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.true x) x := - fun (x : Init.Datatypes.bool) => trans Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.true x) (if Init.Datatypes.true then x else Init.Datatypes.false) x (SAWCoreScaffolding.and__eq Init.Datatypes.true x) (ite_true Init.Datatypes.bool x Init.Datatypes.false). - -Definition and_False1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.false x) Init.Datatypes.false := - fun (x : Init.Datatypes.bool) => trans Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.false x) (if Init.Datatypes.false then x else Init.Datatypes.false) Init.Datatypes.false (SAWCoreScaffolding.and__eq Init.Datatypes.false x) (ite_false Init.Datatypes.bool x Init.Datatypes.false). - -Definition and_True2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x Init.Datatypes.true) x := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb b Init.Datatypes.true) b) x (and_True1 Init.Datatypes.true) (and_False1 Init.Datatypes.true). - -Definition and_False2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x Init.Datatypes.false) Init.Datatypes.false := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb b Init.Datatypes.false) Init.Datatypes.false) x (and_True1 Init.Datatypes.false) (and_False1 Init.Datatypes.false). - -Definition and_assoc : forall (x : Init.Datatypes.bool), forall (y : Init.Datatypes.bool), forall (z : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x (Init.Datatypes.andb y z)) (Init.Datatypes.andb (Init.Datatypes.andb x y) z) := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) (z : Init.Datatypes.bool) => let var__0 := Init.Datatypes.andb x in - let var__1 := Init.Datatypes.andb x y in - let var__2 := Init.Datatypes.andb y Init.Datatypes.true in - let var__3 := Init.Datatypes.andb y Init.Datatypes.false in - let var__4 := Init.Datatypes.andb x var__3 in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x (Init.Datatypes.andb y b)) (Init.Datatypes.andb var__1 b)) z (trans2 Init.Datatypes.bool (Init.Datatypes.andb x var__2) (Init.Datatypes.andb var__1 Init.Datatypes.true) var__1 (eq_cong Init.Datatypes.bool var__2 y (and_True2 y) Init.Datatypes.bool var__0) (and_True2 var__1)) (trans2 Init.Datatypes.bool var__4 (Init.Datatypes.andb var__1 Init.Datatypes.false) Init.Datatypes.false (trans Init.Datatypes.bool var__4 (Init.Datatypes.andb x Init.Datatypes.false) Init.Datatypes.false (eq_cong Init.Datatypes.bool var__3 Init.Datatypes.false (and_False2 y) Init.Datatypes.bool var__0) (and_False2 x)) (and_False2 var__1)). - -Definition and_idem : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x x) x := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb b b) b) x (and_True1 Init.Datatypes.true) (and_False1 Init.Datatypes.false). - -Definition or_True1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.true x) Init.Datatypes.true := - fun (x : Init.Datatypes.bool) => trans Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.true x) (if Init.Datatypes.true then Init.Datatypes.true else x) Init.Datatypes.true (SAWCoreScaffolding.or__eq Init.Datatypes.true x) (ite_true Init.Datatypes.bool Init.Datatypes.true x). - -Definition or_False1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.false x) x := - fun (x : Init.Datatypes.bool) => trans Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.false x) (if Init.Datatypes.false then Init.Datatypes.true else x) x (SAWCoreScaffolding.or__eq Init.Datatypes.false x) (ite_false Init.Datatypes.bool Init.Datatypes.true x). - -Definition or_True2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x Init.Datatypes.true) Init.Datatypes.true := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb b Init.Datatypes.true) Init.Datatypes.true) x (or_True1 Init.Datatypes.true) (or_False1 Init.Datatypes.true). - -Definition or_False2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x Init.Datatypes.false) x := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb b Init.Datatypes.false) b) x (or_True1 Init.Datatypes.false) (or_False1 Init.Datatypes.false). - -Definition or_assoc : forall (x : Init.Datatypes.bool), forall (y : Init.Datatypes.bool), forall (z : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x (Init.Datatypes.orb y z)) (Init.Datatypes.orb (Init.Datatypes.orb x y) z) := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) (z : Init.Datatypes.bool) => let var__0 := Init.Datatypes.orb x in - let var__1 := Init.Datatypes.orb x y in - let var__2 := Init.Datatypes.orb y Init.Datatypes.true in - let var__3 := Init.Datatypes.orb x var__2 in - let var__4 := Init.Datatypes.orb y Init.Datatypes.false in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x (Init.Datatypes.orb y b)) (Init.Datatypes.orb var__1 b)) z (trans2 Init.Datatypes.bool var__3 (Init.Datatypes.orb var__1 Init.Datatypes.true) Init.Datatypes.true (trans Init.Datatypes.bool var__3 (Init.Datatypes.orb x Init.Datatypes.true) Init.Datatypes.true (eq_cong Init.Datatypes.bool var__2 Init.Datatypes.true (or_True2 y) Init.Datatypes.bool var__0) (or_True2 x)) (or_True2 var__1)) (trans2 Init.Datatypes.bool (Init.Datatypes.orb x var__4) (Init.Datatypes.orb var__1 Init.Datatypes.false) var__1 (eq_cong Init.Datatypes.bool var__4 y (or_False2 y) Init.Datatypes.bool var__0) (or_False2 var__1)). - -Definition or_idem : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x x) x := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb b b) b) x (or_True1 Init.Datatypes.true) (or_False1 Init.Datatypes.false). - -Definition implies_True1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (implies Init.Datatypes.true x) x := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - trans Init.Datatypes.bool (Init.Datatypes.orb var__0 x) (Init.Datatypes.orb Init.Datatypes.false x) x (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True Init.Datatypes.bool (fun (y : Init.Datatypes.bool) => Init.Datatypes.orb y x)) (or_False1 x). - -Definition implies_False1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (implies Init.Datatypes.false x) Init.Datatypes.true := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.false in - trans Init.Datatypes.bool (Init.Datatypes.orb var__0 x) (Init.Datatypes.orb Init.Datatypes.true x) Init.Datatypes.true (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.true not_False Init.Datatypes.bool (fun (y : Init.Datatypes.bool) => Init.Datatypes.orb y x)) (or_True1 x). - -Definition true_implies : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (implies Init.Datatypes.true x) x := - fun (x : Init.Datatypes.bool) => implies_True1 x. - -Definition xor_True1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.true x) (Init.Datatypes.negb x) := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb x in - trans Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.true x) (if Init.Datatypes.true then var__0 else x) var__0 (SAWCoreScaffolding.xor__eq Init.Datatypes.true x) (ite_true Init.Datatypes.bool var__0 x). - -Definition xor_False1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.false x) x := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb x in - trans Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.false x) (if Init.Datatypes.false then var__0 else x) x (SAWCoreScaffolding.xor__eq Init.Datatypes.false x) (ite_false Init.Datatypes.bool var__0 x). - -Definition xor_False2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb x Init.Datatypes.false) x := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb b Init.Datatypes.false) b) x (trans Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.true Init.Datatypes.false) (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true (xor_True1 Init.Datatypes.false) not_False) (xor_False1 Init.Datatypes.false). - -Definition xor_True2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb x Init.Datatypes.true) (Init.Datatypes.negb x) := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb b Init.Datatypes.true) (Init.Datatypes.negb b)) x (xor_True1 Init.Datatypes.true) (trans2 Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.false Init.Datatypes.true) (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true (xor_False1 Init.Datatypes.true) not_False). - -Definition xor_same : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb x x) Init.Datatypes.false := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb b b) Init.Datatypes.false) x (trans Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.true Init.Datatypes.true) (Init.Datatypes.negb Init.Datatypes.true) Init.Datatypes.false (xor_True1 Init.Datatypes.true) not_True) (xor_False1 Init.Datatypes.false). - -Definition boolEq_True1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.true x) x := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb x in - trans Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.true x) (if Init.Datatypes.true then x else var__0) x (SAWCoreScaffolding.boolEqb__eq Init.Datatypes.true x) (ite_true Init.Datatypes.bool x var__0). - -Definition boolEq_False1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.false x) (Init.Datatypes.negb x) := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb x in - trans Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.false x) (if Init.Datatypes.false then x else var__0) var__0 (SAWCoreScaffolding.boolEqb__eq Init.Datatypes.false x) (ite_false Init.Datatypes.bool x var__0). - -Definition boolEq_True2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb x Init.Datatypes.true) x := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb b Init.Datatypes.true) b) x (boolEq_True1 Init.Datatypes.true) (trans Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.false Init.Datatypes.true) (Init.Datatypes.negb Init.Datatypes.true) Init.Datatypes.false (boolEq_False1 Init.Datatypes.true) not_True). - -Definition boolEq_False2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb x Init.Datatypes.false) (Init.Datatypes.negb x) := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb b Init.Datatypes.false) (Init.Datatypes.negb b)) x (trans2 Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.true Init.Datatypes.false) (Init.Datatypes.negb Init.Datatypes.true) Init.Datatypes.false (boolEq_True1 Init.Datatypes.false) not_True) (boolEq_False1 Init.Datatypes.false). - -Definition boolEq_same : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb x x) Init.Datatypes.true := - fun (x : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb b b) Init.Datatypes.true) x (boolEq_True1 Init.Datatypes.true) (trans Init.Datatypes.bool (SAWCoreScaffolding.boolEqb Init.Datatypes.false Init.Datatypes.false) (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true (boolEq_False1 Init.Datatypes.false) not_False). - -Definition not_or : forall (x : Init.Datatypes.bool), forall (y : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb (Init.Datatypes.orb x y)) (Init.Datatypes.andb (Init.Datatypes.negb x) (Init.Datatypes.negb y)) := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - let var__1 := Init.Datatypes.negb Init.Datatypes.false in - let var__2 := Init.Datatypes.negb y in - let var__3 := Init.Datatypes.andb var__0 var__2 in - let var__4 := Init.Datatypes.orb Init.Datatypes.true y in - let var__5 := Init.Datatypes.negb var__4 in - let var__6 := Init.Datatypes.andb var__1 var__2 in - let var__7 := Init.Datatypes.orb Init.Datatypes.false y in - let var__8 := Init.Datatypes.andb Init.Datatypes.false var__2 in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb (Init.Datatypes.orb b y)) (Init.Datatypes.andb (Init.Datatypes.negb b) var__2)) x (trans Init.Datatypes.bool var__5 Init.Datatypes.false var__3 (trans Init.Datatypes.bool var__5 var__0 Init.Datatypes.false (eq_cong Init.Datatypes.bool var__4 Init.Datatypes.true (or_True1 y) Init.Datatypes.bool Init.Datatypes.negb) not_True) (trans Init.Datatypes.bool Init.Datatypes.false var__8 var__3 (sym Init.Datatypes.bool var__8 Init.Datatypes.false (and_False1 var__2)) (eq_cong Init.Datatypes.bool Init.Datatypes.false var__0 (sym Init.Datatypes.bool var__0 Init.Datatypes.false not_True) Init.Datatypes.bool (fun (z : Init.Datatypes.bool) => Init.Datatypes.andb z var__2)))) (trans Init.Datatypes.bool (Init.Datatypes.negb var__7) var__2 var__6 (eq_cong Init.Datatypes.bool var__7 y (or_False1 y) Init.Datatypes.bool Init.Datatypes.negb) (sym Init.Datatypes.bool var__6 var__2 (trans Init.Datatypes.bool var__6 (Init.Datatypes.andb Init.Datatypes.true var__2) var__2 (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true not_False Init.Datatypes.bool (fun (z : Init.Datatypes.bool) => Init.Datatypes.andb z var__2)) (and_True1 var__2)))). - -Definition not_and : forall (x : Init.Datatypes.bool), forall (y : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb (Init.Datatypes.andb x y)) (Init.Datatypes.orb (Init.Datatypes.negb x) (Init.Datatypes.negb y)) := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - let var__1 := Init.Datatypes.negb Init.Datatypes.false in - let var__2 := Init.Datatypes.negb y in - let var__3 := Init.Datatypes.orb var__0 var__2 in - let var__4 := Init.Datatypes.andb Init.Datatypes.true y in - let var__5 := Init.Datatypes.orb var__1 var__2 in - let var__6 := Init.Datatypes.andb Init.Datatypes.false y in - let var__7 := Init.Datatypes.negb var__6 in - let var__8 := Init.Datatypes.orb Init.Datatypes.true var__2 in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb (Init.Datatypes.andb b y)) (Init.Datatypes.orb (Init.Datatypes.negb b) var__2)) x (trans Init.Datatypes.bool (Init.Datatypes.negb var__4) var__2 var__3 (eq_cong Init.Datatypes.bool var__4 y (and_True1 y) Init.Datatypes.bool Init.Datatypes.negb) (sym Init.Datatypes.bool var__3 var__2 (trans Init.Datatypes.bool var__3 (Init.Datatypes.orb Init.Datatypes.false var__2) var__2 (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True Init.Datatypes.bool (fun (z : Init.Datatypes.bool) => Init.Datatypes.orb z var__2)) (or_False1 var__2)))) (trans Init.Datatypes.bool var__7 Init.Datatypes.true var__5 (trans Init.Datatypes.bool var__7 var__1 Init.Datatypes.true (eq_cong Init.Datatypes.bool var__6 Init.Datatypes.false (and_False1 y) Init.Datatypes.bool Init.Datatypes.negb) not_False) (trans Init.Datatypes.bool Init.Datatypes.true var__8 var__5 (sym Init.Datatypes.bool var__8 Init.Datatypes.true (or_True1 var__2)) (eq_cong Init.Datatypes.bool Init.Datatypes.true var__1 (sym Init.Datatypes.bool var__1 Init.Datatypes.true not_False) Init.Datatypes.bool (fun (z : Init.Datatypes.bool) => Init.Datatypes.orb z var__2)))). - -Definition ite_not : forall (a : Type), forall (b : Init.Datatypes.bool), forall (x : a), forall (y : a), @Init.Logic.eq a (if Init.Datatypes.negb b then x else y) (if b then y else x) := - fun (a : Type) (b : Init.Datatypes.bool) (x : a) (y : a) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - let var__1 := Init.Datatypes.negb Init.Datatypes.false in - let var__2 := if Init.Datatypes.true then y else x in - let var__3 := if var__0 then x else y in - let var__4 := if Init.Datatypes.false then y else x in - let var__5 := if var__1 then x else y in - SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq a (if Init.Datatypes.negb b' then x else y) (if b' then y else x)) b (trans a var__3 y var__2 (trans a var__3 (if Init.Datatypes.false then x else y) y (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True a (fun (z : Init.Datatypes.bool) => if z then x else y)) (ite_false a x y)) (sym a var__2 y (ite_true a y x))) (trans a var__5 x var__4 (trans a var__5 (if Init.Datatypes.true then x else y) x (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true not_False a (fun (z : Init.Datatypes.bool) => if z then x else y)) (ite_true a x y)) (sym a var__4 x (ite_false a y x))). - -Definition ite_nest1 : forall (a : Type), forall (b : Init.Datatypes.bool), forall (x : a), forall (y : a), forall (z : a), @Init.Logic.eq a (if b then if b then x else y else z) (if b then x else z) := - fun (a : Type) (b : Init.Datatypes.bool) (x : a) (y : a) (z : a) => let var__0 := if Init.Datatypes.true then x else z in - let var__1 := if Init.Datatypes.true then x else y in - let var__2 := if Init.Datatypes.true then var__1 else z in - let var__3 := if Init.Datatypes.false then x else z in - let var__4 := if Init.Datatypes.false then x else y in - SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq a (if b' then if b' then x else y else z) (if b' then x else z)) b (trans a var__2 x var__0 (trans a var__2 var__1 x (ite_true a var__1 z) (ite_true a x y)) (sym a var__0 x (ite_true a x z))) (trans a (if Init.Datatypes.false then var__4 else z) z var__3 (ite_false a var__4 z) (sym a var__3 z (ite_false a x z))). - -Definition ite_nest2 : forall (a : Type), forall (b : Init.Datatypes.bool), forall (x : a), forall (y : a), forall (z : a), @Init.Logic.eq a (if b then x else if b then y else z) (if b then x else z) := - fun (a : Type) (b : Init.Datatypes.bool) (x : a) (y : a) (z : a) => let var__0 := if Init.Datatypes.true then x else z in - let var__1 := if Init.Datatypes.true then y else z in - let var__2 := if Init.Datatypes.false then x else z in - let var__3 := if Init.Datatypes.false then y else z in - let var__4 := if Init.Datatypes.false then x else var__3 in - SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq a (if b' then x else if b' then y else z) (if b' then x else z)) b (trans a (if Init.Datatypes.true then x else var__1) x var__0 (ite_true a x var__1) (sym a var__0 x (ite_true a x z))) (trans a var__4 z var__2 (trans a var__4 var__3 z (ite_false a x var__3) (ite_false a y z)) (sym a var__2 z (ite_false a x z))). - -(* "Prelude::ite_bit@core" was skipped *) - -Definition ite_bit_false_1 : forall (b : Init.Datatypes.bool), forall (c : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (if b then Init.Datatypes.false else c) (Init.Datatypes.andb (Init.Datatypes.negb b) c) := - fun (b : Init.Datatypes.bool) (c : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - let var__1 := Init.Datatypes.negb Init.Datatypes.false in - let var__2 := Init.Datatypes.andb var__0 c in - let var__3 := Init.Datatypes.andb var__1 c in - SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (if b' then Init.Datatypes.false else c) (Init.Datatypes.andb (Init.Datatypes.negb b') c)) b (trans Init.Datatypes.bool (if Init.Datatypes.true then Init.Datatypes.false else c) Init.Datatypes.false var__2 (ite_true Init.Datatypes.bool Init.Datatypes.false c) (sym Init.Datatypes.bool var__2 Init.Datatypes.false (trans Init.Datatypes.bool var__2 (Init.Datatypes.andb Init.Datatypes.false c) Init.Datatypes.false (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True Init.Datatypes.bool (fun (z : Init.Datatypes.bool) => Init.Datatypes.andb z c)) (and_False1 c)))) (trans Init.Datatypes.bool (if Init.Datatypes.false then Init.Datatypes.false else c) c var__3 (ite_false Init.Datatypes.bool Init.Datatypes.false c) (sym Init.Datatypes.bool var__3 c (trans Init.Datatypes.bool var__3 (Init.Datatypes.andb Init.Datatypes.true c) c (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true not_False Init.Datatypes.bool (fun (z : Init.Datatypes.bool) => Init.Datatypes.andb z c)) (and_True1 c)))). - -Definition ite_bit_true_1 : forall (b : Init.Datatypes.bool), forall (c : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (if b then Init.Datatypes.true else c) (Init.Datatypes.orb b c) := - fun (b : Init.Datatypes.bool) (c : Init.Datatypes.bool) => let var__0 := Init.Datatypes.orb Init.Datatypes.true c in - let var__1 := Init.Datatypes.orb Init.Datatypes.false c in - SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (if b' then Init.Datatypes.true else c) (Init.Datatypes.orb b' c)) b (trans Init.Datatypes.bool (if Init.Datatypes.true then Init.Datatypes.true else c) Init.Datatypes.true var__0 (ite_true Init.Datatypes.bool Init.Datatypes.true c) (sym Init.Datatypes.bool var__0 Init.Datatypes.true (or_True1 c))) (trans Init.Datatypes.bool (if Init.Datatypes.false then Init.Datatypes.true else c) c var__1 (ite_false Init.Datatypes.bool Init.Datatypes.true c) (sym Init.Datatypes.bool var__1 c (or_False1 c))). - -Definition ite_fold_not : forall (b : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (if b then Init.Datatypes.false else Init.Datatypes.true) (Init.Datatypes.negb b) := - fun (b : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - let var__1 := Init.Datatypes.negb Init.Datatypes.false in - SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (if b' then Init.Datatypes.false else Init.Datatypes.true) (Init.Datatypes.negb b')) b (trans Init.Datatypes.bool (if Init.Datatypes.true then Init.Datatypes.false else Init.Datatypes.true) Init.Datatypes.false var__0 (ite_true Init.Datatypes.bool Init.Datatypes.false Init.Datatypes.true) (sym Init.Datatypes.bool var__0 Init.Datatypes.false not_True)) (trans Init.Datatypes.bool (if Init.Datatypes.false then Init.Datatypes.false else Init.Datatypes.true) Init.Datatypes.true var__1 (ite_false Init.Datatypes.bool Init.Datatypes.false Init.Datatypes.true) (sym Init.Datatypes.bool var__1 Init.Datatypes.true not_False)). - -Definition ite_eq : forall (a : Type), forall (b : Init.Datatypes.bool), forall (x : a), @Init.Logic.eq a (if b then x else x) x := - fun (a : Type) (b : Init.Datatypes.bool) (x : a) => SAWCoreScaffolding.iteDep (fun (b' : Init.Datatypes.bool) => @Init.Logic.eq a (if b' then x else x) x) b (ite_true a x x) (ite_false a x x). - -Definition or_triv1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x (Init.Datatypes.negb x)) Init.Datatypes.true := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.false in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb b (Init.Datatypes.negb b)) Init.Datatypes.true) x (or_True1 (Init.Datatypes.negb Init.Datatypes.true)) (trans Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.false var__0) var__0 Init.Datatypes.true (or_False1 var__0) not_False). - -Definition or_triv2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb (Init.Datatypes.negb x) x) Init.Datatypes.true := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.false in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb (Init.Datatypes.negb b) b) Init.Datatypes.true) x (or_True2 (Init.Datatypes.negb Init.Datatypes.true)) (trans Init.Datatypes.bool (Init.Datatypes.orb var__0 Init.Datatypes.false) var__0 Init.Datatypes.true (or_False2 var__0) not_False). - -Definition and_triv1 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x (Init.Datatypes.negb x)) Init.Datatypes.false := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb b (Init.Datatypes.negb b)) Init.Datatypes.false) x (trans Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.true var__0) var__0 Init.Datatypes.false (and_True1 var__0) not_True) (and_False1 (Init.Datatypes.negb Init.Datatypes.false)). - -Definition and_triv2 : forall (x : Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb (Init.Datatypes.negb x) x) Init.Datatypes.false := - fun (x : Init.Datatypes.bool) => let var__0 := Init.Datatypes.negb Init.Datatypes.true in - SAWCoreScaffolding.iteDep (fun (b : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb (Init.Datatypes.negb b) b) Init.Datatypes.false) x (trans Init.Datatypes.bool (Init.Datatypes.andb var__0 Init.Datatypes.true) var__0 Init.Datatypes.false (and_True2 var__0) not_True) (and_False2 (Init.Datatypes.negb Init.Datatypes.false)). - -Definition EqTrue : forall (_1 : Init.Datatypes.bool), Prop := - fun (x : Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool x Init.Datatypes.true. - -Definition TrueProp : Prop := - EqTrue Init.Datatypes.true. - -Definition TrueI : EqTrue Init.Datatypes.true := - @Init.Logic.eq_refl Init.Datatypes.bool Init.Datatypes.true. - -Definition andI : forall (x : Init.Datatypes.bool), forall (y : Init.Datatypes.bool), forall (_1 : EqTrue x), forall (_2 : EqTrue y), EqTrue (Init.Datatypes.andb x y) := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) (p : EqTrue x) (q : EqTrue y) => trans4 Init.Datatypes.bool (Init.Datatypes.andb x y) (Init.Datatypes.andb x Init.Datatypes.true) x Init.Datatypes.true (eq_cong Init.Datatypes.bool y Init.Datatypes.true q Init.Datatypes.bool (Init.Datatypes.andb x)) (and_True2 x) p. - -Definition impliesI : forall (x : Init.Datatypes.bool), forall (y : Init.Datatypes.bool), forall (_1 : forall (_1 : EqTrue x), EqTrue y), EqTrue (implies x y) := - fun (x : Init.Datatypes.bool) (y : Init.Datatypes.bool) => SAWCoreScaffolding.iteDep (fun (x1 : Init.Datatypes.bool) => forall (_1 : forall (_1 : EqTrue x1), EqTrue y), EqTrue (implies x1 y)) x (fun (H : forall (_1 : EqTrue Init.Datatypes.true), EqTrue y) => trans Init.Datatypes.bool (implies Init.Datatypes.true y) y Init.Datatypes.true (implies_True1 y) (H TrueI)) (fun (_1 : forall (_1 : EqTrue Init.Datatypes.false), EqTrue y) => implies_False1 y). - -(* Prelude::Either was skipped *) - -Definition Either__rec : forall (s : Type), forall (t : Type), forall (p : forall (_1 : Init.Datatypes.sum s t), Type), forall (_1 : forall (l : s), p (@Init.Datatypes.inl s t l)), forall (_2 : forall (r : t), p (@Init.Datatypes.inr s t r)), forall (e : Init.Datatypes.sum s t), p e := - fun (s : Type) (t : Type) (p : forall (_1 : Init.Datatypes.sum s t), Type) (f1 : forall (l : s), p (@Init.Datatypes.inl s t l)) (f2 : forall (r : t), p (@Init.Datatypes.inr s t r)) (e : Init.Datatypes.sum s t) => @Init.Datatypes.sum_rect s t p f1 f2 e. - -Definition either : forall (a : Type), forall (b : Type), forall (c : Type), forall (_1 : forall (_1 : a), c), forall (_2 : forall (_2 : b), c), forall (_3 : Init.Datatypes.sum a b), c := - fun (a : Type) (b : Type) (c : Type) (f : forall (_1 : a), c) (g : forall (_1 : b), c) (e : Init.Datatypes.sum a b) => Either__rec a b (fun (p : Init.Datatypes.sum a b) => c) f g e. - -Definition left : forall (a : Type), forall (b : Type), forall (_1 : a), Init.Datatypes.sum a b := - fun (a : Type) (b : Type) (x : a) => @Init.Datatypes.inl a b x. - -Definition right : forall (a : Type), forall (b : Type), forall (_1 : b), Init.Datatypes.sum a b := - fun (a : Type) (b : Type) (x : b) => @Init.Datatypes.inr a b x. - -Definition eitherCong0 : forall (t : Type), forall (x : Type), forall (y : Type), forall (_1 : @Init.Logic.eq Type x y), @Init.Logic.eq Type (Init.Datatypes.sum x t) (Init.Datatypes.sum y t) := - fun (t : Type) (x : Type) (y : Type) (eq : @Init.Logic.eq Type x y) => eq_cong Type x y eq Type (fun (y' : Type) => Init.Datatypes.sum y' t). - -Definition eitherCong1 : forall (t : Type), forall (x : Type), forall (y : Type), forall (_1 : @Init.Logic.eq Type x y), @Init.Logic.eq Type (Init.Datatypes.sum t x) (Init.Datatypes.sum t y) := - fun (t : Type) (x : Type) (y : Type) (eq : @Init.Logic.eq Type x y) => eq_cong Type x y eq Type (fun (y' : Type) => Init.Datatypes.sum t y'). - -Definition boolToEither : forall (_1 : Init.Datatypes.bool), Init.Datatypes.sum SAWCoreScaffolding.UnitType SAWCoreScaffolding.UnitType := - fun (b : Init.Datatypes.bool) => if b then @Init.Datatypes.inl SAWCoreScaffolding.UnitType SAWCoreScaffolding.UnitType SAWCoreScaffolding.Unit else @Init.Datatypes.inr SAWCoreScaffolding.UnitType SAWCoreScaffolding.UnitType SAWCoreScaffolding.Unit. - -Inductive Maybe (a : Type) : Type := -| Nothing : Maybe a -| Just : forall (_1 : a), Maybe a -. - -Definition Maybe__rec : forall (a : Type), forall (p : forall (_1 : Maybe a), Type), forall (_1 : p (Nothing a)), forall (_2 : forall (x : a), p (Just a x)), forall (m : Maybe a), p m := - fun (a : Type) (p : forall (_1 : Maybe a), Type) (f1 : p (Nothing a)) (f2 : forall (x : a), p (Just a x)) (m : Maybe a) => @SAWCorePrelude.Maybe_rect a p f1 f2 m. - -Definition maybe : forall (a : Type), forall (b : Type), forall (_1 : b), forall (_2 : forall (_2 : a), b), forall (_3 : Maybe a), b := - fun (a : Type) (b : Type) (f1 : b) (f2 : forall (_1 : a), b) (m : Maybe a) => Maybe__rec a (fun (m' : Maybe a) => b) f1 f2 m. - -(* Prelude::Pos was skipped *) - -(* "Prelude::Pos_cases@core" was skipped *) - -(* "Prelude::posInc@core" was skipped *) - -(* "Prelude::posAdd@core" was skipped *) - -(* "Prelude::posMul@core" was skipped *) - -(* "Prelude::posExp@core" was skipped *) - -Definition posEq : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Stdlib.PArith.BinPos.positive), Init.Datatypes.bool := - SAWCoreScaffolding.Pos_cases (forall (_1 : Stdlib.PArith.BinPos.positive), Init.Datatypes.bool) (SAWCoreScaffolding.Pos_cases Init.Datatypes.bool Init.Datatypes.true (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Init.Datatypes.bool) => Init.Datatypes.false) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Init.Datatypes.bool) => Init.Datatypes.false)) (fun (x : Stdlib.PArith.BinPos.positive) (rx : forall (_1 : Stdlib.PArith.BinPos.positive), Init.Datatypes.bool) => SAWCoreScaffolding.Pos_cases Init.Datatypes.bool Init.Datatypes.false (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Init.Datatypes.bool) => rx y) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Init.Datatypes.bool) => Init.Datatypes.false)) (fun (x : Stdlib.PArith.BinPos.positive) (rx : forall (_1 : Stdlib.PArith.BinPos.positive), Init.Datatypes.bool) => SAWCoreScaffolding.Pos_cases Init.Datatypes.bool Init.Datatypes.false (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Init.Datatypes.bool) => Init.Datatypes.false) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Init.Datatypes.bool) => rx y)). - -Definition posCmp : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Stdlib.PArith.BinPos.positive), forall (_3 : Init.Datatypes.bool), Init.Datatypes.bool := - SAWCoreScaffolding.Pos_cases (forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) (SAWCoreScaffolding.Pos_cases (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (fun (k : Init.Datatypes.bool) => k) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (k : Init.Datatypes.bool) => Init.Datatypes.true) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (k : Init.Datatypes.bool) => Init.Datatypes.true)) (fun (x : Stdlib.PArith.BinPos.positive) (rx : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) => SAWCoreScaffolding.Pos_cases (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (fun (k : Init.Datatypes.bool) => Init.Datatypes.false) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (k : Init.Datatypes.bool) => rx y k) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (k : Init.Datatypes.bool) => rx y Init.Datatypes.true)) (fun (x : Stdlib.PArith.BinPos.positive) (rx : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool) => SAWCoreScaffolding.Pos_cases (forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (fun (k : Init.Datatypes.bool) => Init.Datatypes.false) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (k : Init.Datatypes.bool) => rx y Init.Datatypes.false) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : forall (_1 : Init.Datatypes.bool), Init.Datatypes.bool) (k : Init.Datatypes.bool) => rx y k)). - -Definition posLe : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Stdlib.PArith.BinPos.positive), Init.Datatypes.bool := - fun (x : Stdlib.PArith.BinPos.positive) (y : Stdlib.PArith.BinPos.positive) => posCmp x y Init.Datatypes.true. - -Definition posLt : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Stdlib.PArith.BinPos.positive), Init.Datatypes.bool := - fun (x : Stdlib.PArith.BinPos.positive) (y : Stdlib.PArith.BinPos.positive) => posCmp x y Init.Datatypes.false. - -(* Prelude::Nat was skipped *) - -(* "Prelude::Succ@core" was skipped *) - -(* "Prelude::addNat@core" was skipped *) - -(* "Prelude::mulNat@core" was skipped *) - -(* "Prelude::expNat@core" was skipped *) - -(* "Prelude::equalNat@core" was skipped *) - -(* "Prelude::ltNat@core" was skipped *) - -(* "Prelude::leNat@core" was skipped *) - -(* "Prelude::minNat@core" was skipped *) - -(* "Prelude::maxNat@core" was skipped *) - -(* "Prelude::widthNat@core" was skipped *) - -(* Prelude::Z was skipped *) - -Definition Z_cases : forall (a : Type), forall (_1 : a), forall (_2 : forall (_2 : Stdlib.PArith.BinPos.positive), a), forall (_3 : forall (_3 : Stdlib.PArith.BinPos.positive), a), forall (_4 : Stdlib.ZArith.BinInt.Z), a := - fun (a : Type) => @Stdlib.ZArith.BinInt.Z_rect (fun (_1 : Stdlib.ZArith.BinInt.Z) => a). - -(* "Prelude::BitM@core" was skipped *) - -Definition dblZ : forall (_1 : Stdlib.ZArith.BinInt.Z), Stdlib.ZArith.BinInt.Z := - Z_cases Stdlib.ZArith.BinInt.Z Stdlib.ZArith.BinInt.Z0 (fun (x : Stdlib.PArith.BinPos.positive) => Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.xO x)) (fun (x : Stdlib.PArith.BinPos.positive) => Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.xO x)). - -Definition dblZinc : forall (_1 : Stdlib.ZArith.BinInt.Z), Stdlib.ZArith.BinInt.Z := - Z_cases Stdlib.ZArith.BinInt.Z (Stdlib.ZArith.BinInt.Zpos Stdlib.PArith.BinPos.xH) (fun (x : Stdlib.PArith.BinPos.positive) => Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.xI x)) (fun (x : Stdlib.PArith.BinPos.positive) => Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.Pos.pred_double x)). - -Definition dblZdec : forall (_1 : Stdlib.ZArith.BinInt.Z), Stdlib.ZArith.BinInt.Z := - Z_cases Stdlib.ZArith.BinInt.Z (Stdlib.ZArith.BinInt.Zneg Stdlib.PArith.BinPos.xH) (fun (x : Stdlib.PArith.BinPos.positive) => Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.Pos.pred_double x)) (fun (x : Stdlib.PArith.BinPos.positive) => Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.xI x)). - -Definition posSub : forall (_1 : Stdlib.PArith.BinPos.positive), forall (_2 : Stdlib.PArith.BinPos.positive), Stdlib.ZArith.BinInt.Z := - SAWCoreScaffolding.Pos_cases (forall (_1 : Stdlib.PArith.BinPos.positive), Stdlib.ZArith.BinInt.Z) (SAWCoreScaffolding.Pos_cases Stdlib.ZArith.BinInt.Z Stdlib.ZArith.BinInt.Z0 (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Stdlib.ZArith.BinInt.Z) => Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.Pos.pred_double y)) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Stdlib.ZArith.BinInt.Z) => Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.xO y))) (fun (x : Stdlib.PArith.BinPos.positive) (rx : forall (_1 : Stdlib.PArith.BinPos.positive), Stdlib.ZArith.BinInt.Z) => SAWCoreScaffolding.Pos_cases Stdlib.ZArith.BinInt.Z (Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.Pos.pred_double x)) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Stdlib.ZArith.BinInt.Z) => dblZ (rx y)) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Stdlib.ZArith.BinInt.Z) => dblZdec (rx y))) (fun (x : Stdlib.PArith.BinPos.positive) (rx : forall (_1 : Stdlib.PArith.BinPos.positive), Stdlib.ZArith.BinInt.Z) => SAWCoreScaffolding.Pos_cases Stdlib.ZArith.BinInt.Z (Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.xO x)) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Stdlib.ZArith.BinInt.Z) => dblZinc (rx y)) (fun (y : Stdlib.PArith.BinPos.positive) (_1 : Stdlib.ZArith.BinInt.Z) => dblZ (rx y))). - -(* "Prelude::subNZ@core" was skipped *) - -Definition ZtoNat : forall (_1 : Stdlib.ZArith.BinInt.Z), Init.Datatypes.nat := - Z_cases Init.Datatypes.nat SAWCoreScaffolding.Zero Stdlib.PArith.BinPos.Pos.to_nat (fun (_1 : Stdlib.PArith.BinPos.positive) => SAWCoreScaffolding.Zero). - -(* "Prelude::subNat@core" was skipped *) - -(* "Prelude::doubleNat@core" was skipped *) - -(* "Prelude::posDivMod@core" was skipped *) - -(* "Prelude::divModNat@core" was skipped *) - -Definition divNat : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.nat := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => Pair_fst Init.Datatypes.nat (SAWCoreScaffolding.PairType Init.Datatypes.nat SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.divModNat x y). - -Definition modNat : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Init.Datatypes.nat := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => Pair_fst Init.Datatypes.nat SAWCoreScaffolding.UnitType (Pair_snd Init.Datatypes.nat (SAWCoreScaffolding.PairType Init.Datatypes.nat SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.divModNat x y)). - -(* Prelude::AccessiblePos was skipped *) - -(* "Prelude::AccessiblePos_Bit0@core" was skipped *) - -(* "Prelude::AccessiblePos_Bit1@core" was skipped *) - -(* "Prelude::AccessiblePos_all@core" was skipped *) - -(* Prelude::AccessibleNat was skipped *) - -(* "Prelude::AccessibleNat_NatPos@core" was skipped *) - -(* "Prelude::AccessibleNat_all@core" was skipped *) - -(* "Prelude::Nat__rec@core" was skipped *) - -Definition Nat_cases : forall (a : Type), forall (_1 : a), forall (_2 : forall (_2 : Init.Datatypes.nat), forall (_3 : a), a), forall (_3 : Init.Datatypes.nat), a := - fun (a : Type) (f1 : a) (f2 : forall (_1 : Init.Datatypes.nat), forall (_2 : a), a) (n : Init.Datatypes.nat) => SAWCoreScaffolding.Nat__rec (fun (n1 : Init.Datatypes.nat) => a) f1 f2 n. - -Definition Nat_cases2 : forall (a : Type), forall (_1 : forall (_1 : Init.Datatypes.nat), a), forall (_2 : forall (_2 : Init.Datatypes.nat), a), forall (_3 : forall (_3 : Init.Datatypes.nat), forall (_4 : Init.Datatypes.nat), forall (_5 : a), a), forall (_4 : Init.Datatypes.nat), forall (_5 : Init.Datatypes.nat), a := - fun (a : Type) (f1 : forall (_1 : Init.Datatypes.nat), a) (f2 : forall (_1 : Init.Datatypes.nat), a) (f3 : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), forall (_3 : a), a) (n : Init.Datatypes.nat) (m : Init.Datatypes.nat) => SAWCoreScaffolding.Nat__rec (fun (n1 : Init.Datatypes.nat) => forall (_1 : Init.Datatypes.nat), a) f1 (fun (n1 : Init.Datatypes.nat) (f_rec : forall (_1 : Init.Datatypes.nat), a) (m1 : Init.Datatypes.nat) => SAWCoreScaffolding.Nat__rec (fun (m' : Init.Datatypes.nat) => a) (f2 n1) (fun (m' : Init.Datatypes.nat) (frec' : a) => f3 n1 m' (f_rec m')) m1) n m. - -Definition eqNat : forall (_1 : Init.Datatypes.nat), forall (_2 : Init.Datatypes.nat), Prop := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => @Init.Logic.eq Init.Datatypes.nat x y. - -Definition eqNatSucc : forall (x : Init.Datatypes.nat), forall (y : Init.Datatypes.nat), forall (_1 : eqNat x y), eqNat (SAWCoreScaffolding.Succ x) (SAWCoreScaffolding.Succ y) := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) (eq : eqNat x y) => eq_cong Init.Datatypes.nat x y eq Init.Datatypes.nat (fun (n : Init.Datatypes.nat) => SAWCoreScaffolding.Succ n). - -Definition pred : forall (_1 : Init.Datatypes.nat), Init.Datatypes.nat := - fun (x : Init.Datatypes.nat) => Nat_cases Init.Datatypes.nat SAWCoreScaffolding.Zero (fun (n : Init.Datatypes.nat) (m : Init.Datatypes.nat) => n) x. - -(* "Prelude::eqNatPrec@core" was skipped *) - -(* Prelude::IsLeNat was skipped *) - -(* "Prelude::IsLtNat@core" was skipped *) - -(* "Prelude::IsLeNat__rec@core" was skipped *) - -Axiom natCompareLe : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), Init.Datatypes.sum (SAWCoreScaffolding.IsLtNat m n) (SAWCoreScaffolding.IsLeNat n m) . - -Definition proveEqNat : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), Maybe (@Init.Logic.eq Init.Datatypes.nat m n) := - SAWCoreScaffolding.Nat__rec (fun (m : Init.Datatypes.nat) => forall (n : Init.Datatypes.nat), Maybe (@Init.Logic.eq Init.Datatypes.nat m n)) (SAWCoreScaffolding.Nat__rec (fun (n : Init.Datatypes.nat) => Maybe (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero n)) (Just (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero SAWCoreScaffolding.Zero) (@Init.Logic.eq_refl Init.Datatypes.nat SAWCoreScaffolding.Zero)) (fun (n : Init.Datatypes.nat) (_1 : Maybe (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero n)) => Nothing (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero (SAWCoreScaffolding.Succ n)))) (fun (m : Init.Datatypes.nat) (rec : forall (n : Init.Datatypes.nat), Maybe (@Init.Logic.eq Init.Datatypes.nat m n)) => SAWCoreScaffolding.Nat__rec (fun (n : Init.Datatypes.nat) => Maybe (@Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.Succ m) n)) (Nothing (@Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.Succ m) SAWCoreScaffolding.Zero)) (fun (n : Init.Datatypes.nat) (_1 : Maybe (@Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.Succ m) n)) => let var__0 := @Init.Logic.eq Init.Datatypes.nat m n in - let var__1 := @Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.Succ m) (SAWCoreScaffolding.Succ n) in - maybe var__0 (Maybe var__1) (Nothing var__1) (fun (e : var__0) => Just var__1 (eqNatSucc m n e)) (rec n))). - -Axiom proveLeNat : forall (x : Init.Datatypes.nat), forall (y : Init.Datatypes.nat), Maybe (SAWCoreScaffolding.IsLeNat x y) . - -Definition proveLtNat : forall (x : Init.Datatypes.nat), forall (y : Init.Datatypes.nat), Maybe (SAWCoreScaffolding.IsLtNat x y) := - fun (x : Init.Datatypes.nat) (y : Init.Datatypes.nat) => proveLeNat (SAWCoreScaffolding.Succ x) y. - -(* "Prelude::eqNatAdd0@core" was skipped *) - -(* "Prelude::eqNatAddS@core" was skipped *) - -(* "Prelude::eqNatAddComm@core" was skipped *) - -(* "Prelude::addNat_assoc@core" was skipped *) - -Definition equal0Nat : forall (_1 : Init.Datatypes.nat), Init.Datatypes.bool := - SAWCoreScaffolding.equalNat SAWCoreScaffolding.Zero. - -Axiom equalNatToEqNat : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.equalNat m n) Init.Datatypes.true), eqNat m n . - -Definition ifEqNatWithProof : forall (a : Type), forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : a), forall (_2 : forall (_2 : eqNat m n), a), a := - fun (a : Type) (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (x : a) (f : forall (_1 : eqNat m n), a) => let var__0 := SAWCoreScaffolding.equalNat m n in - ifWithProof a var__0 x (fun (pf : @Init.Logic.eq Init.Datatypes.bool var__0 Init.Datatypes.true) => f (equalNatToEqNat m n pf)). - -Definition natCase : forall (p : forall (_1 : Init.Datatypes.nat), Type), forall (_1 : p SAWCoreScaffolding.Zero), forall (_2 : forall (n : Init.Datatypes.nat), p (SAWCoreScaffolding.Succ n)), forall (n : Init.Datatypes.nat), p n := - fun (p : forall (_1 : Init.Datatypes.nat), Type) (z : p SAWCoreScaffolding.Zero) (s : forall (n : Init.Datatypes.nat), p (SAWCoreScaffolding.Succ n)) => SAWCoreScaffolding.Nat__rec p z (fun (n : Init.Datatypes.nat) (r : p n) => s n). - -(* "Prelude::if0Nat@core" was skipped *) - -Axiom expByNat : forall (a : Type), forall (_1 : a), forall (_2 : forall (_2 : a), forall (_3 : a), a), forall (_3 : a), forall (_4 : Init.Datatypes.nat), a . - -Definition IsLeNat_transitive : forall (n : Init.Datatypes.nat), forall (m : Init.Datatypes.nat), forall (o : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLeNat n m), forall (_2 : SAWCoreScaffolding.IsLeNat m o), SAWCoreScaffolding.IsLeNat n o := - fun (n : Init.Datatypes.nat) (m : Init.Datatypes.nat) (o : Init.Datatypes.nat) (Hnm : SAWCoreScaffolding.IsLeNat n m) (Hmo : SAWCoreScaffolding.IsLeNat m o) => SAWCoreScaffolding.IsLeNat__rec m (fun (x : Init.Datatypes.nat) (H : SAWCoreScaffolding.IsLeNat m x) => SAWCoreScaffolding.IsLeNat n x) Hnm (fun (x : Init.Datatypes.nat) (H1 : SAWCoreScaffolding.IsLeNat m x) (H2 : SAWCoreScaffolding.IsLeNat n x) => SAWCoreScaffolding.IsLeNat_succ n x H2) o Hmo. - -(* "Prelude::IsLtNat_Zero_absurd@core" was skipped *) - -(* "Prelude::IsLeNat_SuccSucc@core" was skipped *) - -Definition Nat_complete_induction : forall (p : forall (_1 : Init.Datatypes.nat), Prop), forall (_1 : forall (n : Init.Datatypes.nat), forall (_1 : forall (m : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLtNat m n), p m), p n), forall (n : Init.Datatypes.nat), p n := - fun (p : forall (_1 : Init.Datatypes.nat), Prop) (f : forall (n : Init.Datatypes.nat), forall (_1 : forall (m : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLtNat m n), p m), p n) (n : Init.Datatypes.nat) => SAWCoreScaffolding.Nat__rec (fun (n1 : Init.Datatypes.nat) => forall (m : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLeNat m n1), p m) (fun (n1 : Init.Datatypes.nat) (Hn : SAWCoreScaffolding.IsLeNat n1 SAWCoreScaffolding.Zero) => f n1 (fun (m : Init.Datatypes.nat) (Hm : SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.Succ m) n1) => SAWCoreScaffolding.IsLtNat_Zero_absurd (p m) m (IsLeNat_transitive (SAWCoreScaffolding.Succ m) n1 SAWCoreScaffolding.Zero Hm Hn))) (fun (n1 : Init.Datatypes.nat) (Hind : forall (m : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLeNat m n1), p m) (r : Init.Datatypes.nat) (Hr : SAWCoreScaffolding.IsLeNat r (SAWCoreScaffolding.Succ n1)) => f r (fun (m : Init.Datatypes.nat) (Hm : SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.Succ m) r) => Hind m (SAWCoreScaffolding.IsLeNat_SuccSucc m n1 (IsLeNat_transitive (SAWCoreScaffolding.Succ m) r (SAWCoreScaffolding.Succ n1) Hm Hr)))) n n (SAWCoreScaffolding.IsLeNat_base n). - -(* "Prelude::Vec@core" was skipped *) - -(* "Prelude::gen@core" was skipped *) - -(* "Prelude::head@core" was skipped *) - -(* "Prelude::tail@core" was skipped *) - -(* "Prelude::head_gen@core" was skipped *) - -(* "Prelude::tail_gen@core" was skipped *) - -Definition atWithDefault' : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : Init.Datatypes.nat), a := - fun (n : Init.Datatypes.nat) (a : Type) (d : a) => SAWCoreScaffolding.Nat__rec (fun (n1 : Init.Datatypes.nat) => forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n1 a), forall (_2 : Init.Datatypes.nat), a) (fun (_1 : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero a) (_2 : Init.Datatypes.nat) => d) (fun (n1 : Init.Datatypes.nat) (rec_f : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n1 a), forall (_2 : Init.Datatypes.nat), a) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n1) a) (i : Init.Datatypes.nat) => Nat_cases a (SAWCoreVectorsAsRocqVectors.head n1 a v) (fun (i_prev : Init.Datatypes.nat) (_1 : a) => rec_f (SAWCoreVectorsAsRocqVectors.tail n1 a v) i_prev) i) n. - -(* "Prelude::atWithDefault@core" was skipped *) - -Definition sawAt : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : Init.Datatypes.nat), a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (v : SAWCoreVectorsAsRocqVectors.Vec n a) (i : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.atWithDefault n a (SAWCoreScaffolding.error a "at: index out of bounds"%string) v i. - -(* "Prelude::EmptyVec@core" was skipped *) - -Definition ConsVec : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : a), forall (n : Init.Datatypes.nat), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (x : a) (n : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec n a) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.Succ n) a (Nat_cases a x (fun (i : Init.Datatypes.nat) (a' : a) => SAWCorePrelude.sawAt n a v i)). - -Definition upd : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : Init.Datatypes.nat), forall (_3 : a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (v : SAWCoreVectorsAsRocqVectors.Vec n a) (j : Init.Datatypes.nat) (x : a) => SAWCoreVectorsAsRocqVectors.gen n a (fun (i : Init.Datatypes.nat) => if SAWCoreScaffolding.equalNat i j then x else SAWCorePrelude.sawAt n a v i). - -Definition map : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall (_1 : forall (_1 : a), b), forall (n : Init.Datatypes.nat), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n b := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (f : forall (_1 : a), b) (n : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec n a) => SAWCoreVectorsAsRocqVectors.gen n b (fun (i : Init.Datatypes.nat) => f (SAWCorePrelude.sawAt n a v i)). - -Definition zipWith : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (b : Type), forall {Inh_b : SAWCoreScaffolding.Inhabited b}, forall (c : Type), forall (_1 : forall (_1 : a), forall (_2 : b), c), forall (n : Init.Datatypes.nat), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec n b), SAWCoreVectorsAsRocqVectors.Vec n c := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (b : Type) (Inh_b : SAWCoreScaffolding.Inhabited b) (c : Type) (f : forall (_1 : a), forall (_2 : b), c) (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n a) (y : SAWCoreVectorsAsRocqVectors.Vec n b) => SAWCoreVectorsAsRocqVectors.gen n c (fun (i : Init.Datatypes.nat) => f (SAWCorePrelude.sawAt n a x i) (SAWCorePrelude.sawAt n b y i)). - -Definition replicate : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (x : a) => SAWCoreVectorsAsRocqVectors.gen n a (fun (_1 : Init.Datatypes.nat) => x). - -Definition single : forall (a : Type), forall (_1 : a), SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) a := - replicate (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH). - -(* "Prelude::at_single@core" was skipped *) - - -Fixpoint zip (a b : sort 0) (m n : nat) (xs : Vec m a) (ys : Vec n b) - : Vec (minNat m n) (a * (b * unit)) := - match - xs in Vector.t _ m' - return Vector.t _ (minNat m' n) - with - | Vector.nil => Vector.nil _ - | Vector.cons x pm xs => - match - ys in Vector.t _ n' - return Vector.t _ (minNat (S pm) n') - with - | Vector.nil => Vector.nil _ - | Vector.cons y pm' ys => Vector.cons _ (x, (y, tt)) _ (zip _ _ _ _ xs ys) - end - end -. - -(* "Prelude::foldr@core" was skipped *) - -(* "Prelude::foldl@core" was skipped *) - -(* "Prelude::scanl@core" was skipped *) - -(* "Prelude::foldr_nil@core" was skipped *) - -(* "Prelude::foldr_cons@core" was skipped *) - -(* "Prelude::foldl_nil@core" was skipped *) - -(* "Prelude::foldl_cons@core" was skipped *) - -Definition reverse : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) => SAWCoreVectorsAsRocqVectors.gen n a (fun (i : Init.Datatypes.nat) => SAWCorePrelude.sawAt n a xs (SAWCoreScaffolding.subNat (SAWCoreScaffolding.subNat n (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) i)). - -Definition transpose : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a)), SAWCoreVectorsAsRocqVectors.Vec n (SAWCoreVectorsAsRocqVectors.Vec m a) := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (xss : SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a)) => SAWCoreVectorsAsRocqVectors.gen n (SAWCoreVectorsAsRocqVectors.Vec m a) (fun (j : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.gen m a (fun (i : Init.Datatypes.nat) => SAWCorePrelude.sawAt n a (SAWCorePrelude.sawAt m (SAWCoreVectorsAsRocqVectors.Vec n a) xss i) j)). - -Definition vecEq : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec n a), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (eqFn : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool) (x : SAWCoreVectorsAsRocqVectors.Vec n a) (y : SAWCoreVectorsAsRocqVectors.Vec n a) => SAWCoreVectorsAsRocqVectors.foldr Init.Datatypes.bool Init.Datatypes.bool n Init.Datatypes.andb Init.Datatypes.true (zipWith a a Init.Datatypes.bool eqFn n x y). - -Axiom vecEq_refl : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (eqFn : forall (_1 : a), forall (_2 : a), Init.Datatypes.bool), forall (_1 : forall (x : a), @Init.Logic.eq Init.Datatypes.bool (eqFn x x) Init.Datatypes.true), forall (x : SAWCoreVectorsAsRocqVectors.Vec n a), @Init.Logic.eq Init.Datatypes.bool (vecEq n a eqFn x x) Init.Datatypes.true . - -Definition take : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a), SAWCoreVectorsAsRocqVectors.Vec m a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a) => SAWCoreVectorsAsRocqVectors.gen m a (fun (i : Init.Datatypes.nat) => SAWCorePrelude.sawAt (SAWCoreScaffolding.addNat m n) a v i). - -Definition vecCong : forall (a : Type), forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : @Init.Logic.eq Init.Datatypes.nat m n), @Init.Logic.eq Type (SAWCoreVectorsAsRocqVectors.Vec m a) (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (a : Type) (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (eq : @Init.Logic.eq Init.Datatypes.nat m n) => eq_cong Init.Datatypes.nat m n eq Type (fun (i : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.Vec i a). - -(* "Prelude::coerceVec@core" was skipped *) - -(* "Prelude::take0@core" was skipped *) - -Definition drop : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a) => SAWCoreVectorsAsRocqVectors.gen n a (fun (i : Init.Datatypes.nat) => SAWCorePrelude.sawAt (SAWCoreScaffolding.addNat m n) a v (SAWCoreScaffolding.addNat m i)). - -(* "Prelude::drop0@core" was skipped *) - -Definition slice : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (o : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat (SAWCoreScaffolding.addNat m n) o) a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (o : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat (SAWCoreScaffolding.addNat m n) o) a) => drop a m n (take a (SAWCoreScaffolding.addNat m n) o v). - -Definition join : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a)), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (v : SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a)) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.mulNat m n) a (fun (i : Init.Datatypes.nat) => SAWCorePrelude.sawAt n a (SAWCorePrelude.sawAt m (SAWCoreVectorsAsRocqVectors.Vec n a) v (divNat i n)) (modNat i n)). - -Definition split : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a), SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a) => SAWCoreVectorsAsRocqVectors.gen m (SAWCoreVectorsAsRocqVectors.Vec n a) (fun (i : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.gen n a (fun (j : Init.Datatypes.nat) => SAWCorePrelude.sawAt (SAWCoreScaffolding.mulNat m n) a v (SAWCoreScaffolding.addNat (SAWCoreScaffolding.mulNat i n) j))). - -Definition append : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (x : SAWCoreVectorsAsRocqVectors.Vec m a) (y : SAWCoreVectorsAsRocqVectors.Vec n a) => SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.addNat m n) a (fun (i : Init.Datatypes.nat) => if SAWCoreScaffolding.ltNat i m then SAWCorePrelude.sawAt m a x i else SAWCorePrelude.sawAt n a y (SAWCoreScaffolding.subNat i m)). - -(* "Prelude::rotateL@core" was skipped *) - -(* "Prelude::rotateR@core" was skipped *) - -(* "Prelude::shiftL@core" was skipped *) - -(* "Prelude::shiftR@core" was skipped *) - -Definition joinLittleEndian : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a)), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (v : SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a)) => join m n a (reverse m (SAWCoreVectorsAsRocqVectors.Vec n a) v). - -Definition splitLittleEndian : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a), SAWCoreVectorsAsRocqVectors.Vec m (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a) => reverse m (SAWCoreVectorsAsRocqVectors.Vec n a) (split m n a v). - -Definition pmux : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : a), a := - fun (n : Init.Datatypes.nat) (a : Type) (conds : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (default : a) => SAWCoreVectorsAsRocqVectors.foldr (forall (_1 : a), a) a n (SAWCoreScaffolding.id (forall (_1 : a), a)) default (zipWith Init.Datatypes.bool a (forall (_1 : a), a) (SAWCoreScaffolding.ite a) n conds xs). - -(* "Prelude::appendString@core" was skipped *) - -Axiom bytesToString : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n (SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) Init.Datatypes.bool)), Stdlib.Strings.String.string . - -(* "Prelude::equalString@core" was skipped *) - -Definition msb : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => SAWCorePrelude.sawAt (SAWCoreScaffolding.Succ n) Init.Datatypes.bool v SAWCoreScaffolding.Zero. - -Definition lsb : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (v : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => SAWCorePrelude.sawAt (SAWCoreScaffolding.Succ n) Init.Datatypes.bool v n. - -(* "Prelude::bvNat@core" was skipped *) - -(* "Prelude::bvToNat@core" was skipped *) - -Axiom bvNat_bvToNat : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreVectorsAsRocqVectors.bvNat n (SAWCoreVectorsAsRocqVectors.bvToNat n x)) x . - -Definition bvAt : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => SAWCorePrelude.sawAt n a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i). - -Definition bvUpd : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_3 : a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (y : a) => upd n a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i) y. - -Definition bvRotateL : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.rotateL n a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i). - -Definition bvRotateR : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.rotateR n a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i). - -Definition bvShiftL : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (z : a) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.shiftL n a z xs (SAWCoreVectorsAsRocqVectors.bvToNat w i). - -Definition bvShiftR : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (z : a) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.shiftR n a z xs (SAWCoreVectorsAsRocqVectors.bvToNat w i). - -Definition bvSShiftR : forall (n : Init.Datatypes.nat), forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (w : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a := - fun (n : Init.Datatypes.nat) (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (w : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => let var__0 := SAWCoreScaffolding.Succ n in - bvShiftR var__0 a w (SAWCorePrelude.sawAt var__0 a xs SAWCoreScaffolding.Zero) xs i. - -(* "Prelude::bvAdd@core" was skipped *) - -(* "Prelude::bvugt@core" was skipped *) - -(* "Prelude::bvuge@core" was skipped *) - -(* "Prelude::bvult@core" was skipped *) - -(* "Prelude::bvule@core" was skipped *) - -(* "Prelude::bvsgt@core" was skipped *) - -(* "Prelude::bvsge@core" was skipped *) - -(* "Prelude::bvslt@core" was skipped *) - -(* "Prelude::bvsle@core" was skipped *) - -(* "Prelude::bvPopcount@core" was skipped *) - -(* "Prelude::bvCountLeadingZeros@core" was skipped *) - -(* "Prelude::bvCountTrailingZeros@core" was skipped *) - -(* "Prelude::bvForall@core" was skipped *) - -Definition bvCarry : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => SAWCoreVectorsAsRocqVectors.bvult n (SAWCoreVectorsAsRocqVectors.bvAdd n x y) x. - -Definition bvSCarry : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => let var__0 := msb n x in - Init.Datatypes.andb (SAWCoreScaffolding.boolEqb var__0 (msb n y)) (Init.Datatypes.xorb var__0 (msb n (SAWCoreVectorsAsRocqVectors.bvAdd (SAWCoreScaffolding.Succ n) x y))). - -Definition bvAddWithCarry : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreScaffolding.PairType Init.Datatypes.bool (SAWCoreScaffolding.PairType (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.UnitType) := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => SAWCoreScaffolding.PairValue Init.Datatypes.bool (SAWCoreScaffolding.PairType (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.UnitType) (bvCarry n x y) (SAWCoreScaffolding.PairValue (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) SAWCoreScaffolding.UnitType (SAWCoreVectorsAsRocqVectors.bvAdd n x y) SAWCoreScaffolding.Unit). - -(* "Prelude::bvAddZeroL@core" was skipped *) - -(* "Prelude::bvAddZeroR@core" was skipped *) - -(* "Prelude::bvNeg@core" was skipped *) - -(* "Prelude::bvSub@core" was skipped *) - -Definition bvSBorrow : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => let var__0 := msb n x in - Init.Datatypes.andb (Init.Datatypes.xorb var__0 (msb n y)) (Init.Datatypes.xorb var__0 (msb n (SAWCoreVectorsAsRocqVectors.bvSub (SAWCoreScaffolding.Succ n) x y))). - -(* "Prelude::bvMul@core" was skipped *) - -(* "Prelude::bvLg2@core" was skipped *) - -(* "Prelude::bvUDiv@core" was skipped *) - -(* "Prelude::bvURem@core" was skipped *) - -(* "Prelude::bvSDiv@core" was skipped *) - -(* "Prelude::bvSRem@core" was skipped *) - -(* "Prelude::bvShl@core" was skipped *) - -(* "Prelude::bvShr@core" was skipped *) - -(* "Prelude::bvSShr@core" was skipped *) - -(* "Prelude::bvShiftL_bvShl@core" was skipped *) - -(* "Prelude::bvShiftR_bvShr@core" was skipped *) - -Definition bvZipWith : forall (_1 : forall (_1 : Init.Datatypes.bool), forall (_2 : Init.Datatypes.bool), Init.Datatypes.bool), forall (n : Init.Datatypes.nat), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - zipWith Init.Datatypes.bool Init.Datatypes.bool Init.Datatypes.bool. - -Definition bvNot : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - map Init.Datatypes.bool Init.Datatypes.bool Init.Datatypes.negb. - -Definition bvAnd : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - bvZipWith Init.Datatypes.andb. - -Definition bvOr : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - bvZipWith Init.Datatypes.orb. - -Definition bvXor : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - bvZipWith Init.Datatypes.xorb. - -Definition bvEq : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => vecEq n Init.Datatypes.bool SAWCoreScaffolding.boolEqb x y. - -(* "Prelude::bvEq_refl@core" was skipped *) - -(* "Prelude::equalNat_bv@core" was skipped *) - -Definition bvBool : forall (n : Init.Datatypes.nat), forall (_1 : Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (b : Init.Datatypes.bool) => if b then SAWCoreVectorsAsRocqVectors.bvNat n (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) else SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero. - -Definition bvNe : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => Init.Datatypes.negb (bvEq n x y). - -Definition bvNonzero : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => bvNe n x (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero). - -Definition bvTrunc : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - drop Init.Datatypes.bool. - -Definition bvUExt : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) Init.Datatypes.bool := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => append m n Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.bvNat m SAWCoreScaffolding.Zero) x. - -Definition replicateBool : forall (n : Init.Datatypes.nat), forall (_1 : Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (b : Init.Datatypes.bool) => let var__0 := SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero in - if b then bvNot n var__0 else var__0. - -Definition bvSExt : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m (SAWCoreScaffolding.Succ n)) Init.Datatypes.bool := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => append m (SAWCoreScaffolding.Succ n) Init.Datatypes.bool (replicateBool m (msb n x)) x. - -Definition bvMin : forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => if SAWCoreVectorsAsRocqVectors.bvule n x y then x else y. - -Definition polyMul : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ m) Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ (SAWCoreScaffolding.addNat m n)) Init.Datatypes.bool := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ m) Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => let var__0 := SAWCoreScaffolding.Succ (SAWCoreScaffolding.addNat m n) in - let var__1 := SAWCoreVectorsAsRocqVectors.Vec var__0 Init.Datatypes.bool in - SAWCoreVectorsAsRocqVectors.foldl Init.Datatypes.bool var__1 (SAWCoreScaffolding.Succ n) (fun (z : var__1) (yi : Init.Datatypes.bool) => let var__2 := SAWCoreScaffolding.Succ m in - let var__3 := SAWCoreScaffolding.addNat m n in - let var__4 := SAWCoreScaffolding.Succ var__3 in - let var__5 := SAWCoreScaffolding.addNat n var__2 in - let var__6 := SAWCoreScaffolding.addNat n m in - bvXor var__4 (SAWCoreVectorsAsRocqVectors.bvShl var__4 z (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (SAWCoreScaffolding.coerce (SAWCoreVectorsAsRocqVectors.Vec var__5 Init.Datatypes.bool) var__1 (vecCong Init.Datatypes.bool var__5 var__4 (trans Init.Datatypes.nat var__5 (SAWCoreScaffolding.Succ var__6) var__4 (SAWCoreScaffolding.eqNatAddS n m) (eqNatSucc var__6 var__3 (SAWCoreScaffolding.eqNatAddComm n m)))) (bvUExt n var__2 (if yi then x else SAWCoreVectorsAsRocqVectors.bvNat var__2 SAWCoreScaffolding.Zero)))) (SAWCoreVectorsAsRocqVectors.bvNat var__0 SAWCoreScaffolding.Zero) y. - -Definition polyMod : forall (m : Init.Datatypes.nat), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec m Init.Datatypes.bool), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool), SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := - fun (m : Init.Datatypes.nat) (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec m Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool) => let var__0 := SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) Init.Datatypes.bool in - (fun (reduce : forall (_1 : var__0), var__0) => let var__1 := SAWCoreScaffolding.Succ n in - Pair_fst (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) (SAWCoreVectorsAsRocqVectors.foldr Init.Datatypes.bool (SAWCoreScaffolding.PairType (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) m (fun (xi : Init.Datatypes.bool) (acc : SAWCoreScaffolding.PairType (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) => let var__2 := Pair_fst var__0 SAWCoreScaffolding.UnitType (Pair_snd (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) acc) in - SAWCoreScaffolding.PairValue (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) (bvXor n (Pair_fst (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) acc) (if xi then SAWCoreVectorsAsRocqVectors.tail n Init.Datatypes.bool var__2 else SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero)) (SAWCoreScaffolding.PairValue var__0 SAWCoreScaffolding.UnitType (reduce (SAWCoreVectorsAsRocqVectors.bvShl var__1 var__2 (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Unit)) (SAWCoreScaffolding.PairValue (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) (SAWCoreScaffolding.PairValue var__0 SAWCoreScaffolding.UnitType (reduce (SAWCoreVectorsAsRocqVectors.bvNat var__1 (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Unit)) x)) (fun (u : var__0) => let var__1 := SAWCoreScaffolding.Succ n in - bvMin var__1 u (bvXor var__1 u y)). - -Inductive Stream (a : Type) : Type := -| MkStream : forall (_1 : forall (_1 : Init.Datatypes.nat), a), Stream a -. - -#[global] Instance Inhabited_Stream (a:Type) (Ha:Inhabited a) : Inhabited (Stream a) := MkInhabited (Stream a) (MkStream a (fun _ => inhabitant)). -Definition Stream__rec : forall (a : Type), forall (p : forall (_1 : Stream a), Type), forall (_1 : forall (f : forall (_1 : Init.Datatypes.nat), a), p (MkStream a f)), forall (str : Stream a), p str := - fun (a : Type) (p : forall (_1 : Stream a), Type) (f1 : forall (f : forall (_1 : Init.Datatypes.nat), a), p (MkStream a f)) (str : Stream a) => @SAWCorePrelude.Stream_rect a p f1 str. - -Definition streamUpd : forall (a : Type), forall (_1 : Stream a), forall (_2 : Init.Datatypes.nat), forall (_3 : a), Stream a := - fun (a : Type) (strm : Stream a) (i : Init.Datatypes.nat) (y : a) => Stream__rec a (fun (strm' : Stream a) => Stream a) (fun (s : forall (_1 : Init.Datatypes.nat), a) => MkStream a (fun (j : Init.Datatypes.nat) => if SAWCoreScaffolding.equalNat i j then y else s j)) strm. - -Definition bvStreamUpd : forall (a : Type), forall (w : Init.Datatypes.nat), forall (_1 : Stream a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_3 : a), Stream a := - fun (a : Type) (w : Init.Datatypes.nat) (xs : Stream a) (i : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (y : a) => streamUpd a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i) y. - -Definition streamGet : forall (a : Type), forall (_1 : Stream a), forall (_2 : Init.Datatypes.nat), a := - fun (a : Type) (strm : Stream a) (i : Init.Datatypes.nat) => Stream__rec a (fun (strm' : Stream a) => a) (fun (s : forall (_1 : Init.Datatypes.nat), a) => s i) strm. - -Definition streamConst : forall (a : Type), forall (_1 : a), Stream a := - fun (a : Type) (x : a) => MkStream a (fun (i : Init.Datatypes.nat) => x). - -Definition streamMap : forall (a : Type), forall (b : Type), forall (_1 : forall (_1 : a), b), forall (_2 : Stream a), Stream b := - fun (a : Type) (b : Type) (f : forall (_1 : a), b) (xs : Stream a) => MkStream b (fun (i : Init.Datatypes.nat) => f (streamGet a xs i)). - -Definition streamMap2 : forall (a : Type), forall (b : Type), forall (c : Type), forall (_1 : forall (_1 : a), forall (_2 : b), c), forall (_2 : Stream a), forall (_3 : Stream b), Stream c := - fun (a : Type) (b : Type) (c : Type) (f : forall (_1 : a), forall (_2 : b), c) (xs : Stream a) (ys : Stream b) => MkStream c (fun (i : Init.Datatypes.nat) => f (streamGet a xs i) (streamGet b ys i)). - -Definition streamTake : forall (a : Type), forall (n : Init.Datatypes.nat), forall (_1 : Stream a), SAWCoreVectorsAsRocqVectors.Vec n a := - fun (a : Type) (n : Init.Datatypes.nat) (xs : Stream a) => SAWCoreVectorsAsRocqVectors.gen n a (fun (i : Init.Datatypes.nat) => streamGet a xs i). - -Definition streamDrop : forall (a : Type), forall (n : Init.Datatypes.nat), forall (_1 : Stream a), Stream a := - fun (a : Type) (n : Init.Datatypes.nat) (xs : Stream a) => MkStream a (fun (i : Init.Datatypes.nat) => streamGet a xs (SAWCoreScaffolding.addNat n i)). - -Definition streamAppend : forall (a : Type), forall (n : Init.Datatypes.nat), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_2 : Stream a), Stream a := - fun (a : Type) (n : Init.Datatypes.nat) (xs : SAWCoreVectorsAsRocqVectors.Vec n a) (ys : Stream a) => MkStream a (fun (i : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.atWithDefault n a (streamGet a ys (SAWCoreScaffolding.subNat i n)) xs i). - -Definition streamJoin : forall (a : Type), forall {Inh_a : SAWCoreScaffolding.Inhabited a}, forall (n : Init.Datatypes.nat), forall (_1 : Stream (SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a)), Stream a := - fun (a : Type) (Inh_a : SAWCoreScaffolding.Inhabited a) (n : Init.Datatypes.nat) (s : Stream (SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a)) => MkStream a (fun (i : Init.Datatypes.nat) => let var__0 := SAWCoreScaffolding.Succ n in - SAWCorePrelude.sawAt var__0 a (streamGet (SAWCoreVectorsAsRocqVectors.Vec var__0 a) s (divNat i var__0)) (modNat i var__0)). - -Definition streamSplit : forall (a : Type), forall (n : Init.Datatypes.nat), forall (_1 : Stream a), Stream (SAWCoreVectorsAsRocqVectors.Vec n a) := - fun (a : Type) (n : Init.Datatypes.nat) (xs : Stream a) => MkStream (SAWCoreVectorsAsRocqVectors.Vec n a) (fun (i : Init.Datatypes.nat) => SAWCoreVectorsAsRocqVectors.gen n a (fun (j : Init.Datatypes.nat) => streamGet a xs (SAWCoreScaffolding.addNat (SAWCoreScaffolding.mulNat i n) j))). - -Definition streamShiftL : forall (a : Type), forall (_1 : Stream a), forall (_2 : Init.Datatypes.nat), Stream a := - fun (a : Type) (xs : Stream a) (i : Init.Datatypes.nat) => streamDrop a i xs. - -Definition streamShiftR : forall (a : Type), forall (_1 : a), forall (_2 : Stream a), forall (_3 : Init.Datatypes.nat), Stream a := - fun (a : Type) (z : a) (xs : Stream a) (i : Init.Datatypes.nat) => streamAppend a i (replicate i a z) xs. - -(* "Prelude::streamScanl@core" was skipped *) - -(* "Prelude::Integer@core" was skipped *) - -(* "Prelude::intAdd@core" was skipped *) - -(* "Prelude::intSub@core" was skipped *) - -(* "Prelude::intMul@core" was skipped *) - -(* "Prelude::intDiv@core" was skipped *) - -(* "Prelude::intMod@core" was skipped *) - -(* "Prelude::intMin@core" was skipped *) - -(* "Prelude::intMax@core" was skipped *) - -(* "Prelude::intNeg@core" was skipped *) - -(* "Prelude::intAbs@core" was skipped *) - -(* "Prelude::intEq@core" was skipped *) - -(* "Prelude::intLe@core" was skipped *) - -(* "Prelude::intLt@core" was skipped *) - -(* "Prelude::intToNat@core" was skipped *) - -(* "Prelude::natToInt@core" was skipped *) - -(* "Prelude::intToBv@core" was skipped *) - -(* "Prelude::bvToInt@core" was skipped *) - -(* "Prelude::sbvToInt@core" was skipped *) - -Definition intEven : forall (_1 : SAWCoreScaffolding.Integer), Init.Datatypes.bool := - fun (x : SAWCoreScaffolding.Integer) => SAWCoreScaffolding.intEqb (SAWCoreScaffolding.intMod x (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero). - -(* "Prelude::IntMod@core" was skipped *) - -(* "Prelude::toIntMod@core" was skipped *) - -(* "Prelude::fromIntMod@core" was skipped *) - -(* "Prelude::intModEq@core" was skipped *) - -(* "Prelude::intModAdd@core" was skipped *) - -(* "Prelude::intModSub@core" was skipped *) - -(* "Prelude::intModMul@core" was skipped *) - -(* "Prelude::intModNeg@core" was skipped *) - -Definition updNatFun : forall (a : Type), forall (_1 : forall (_1 : Init.Datatypes.nat), a), forall (_2 : Init.Datatypes.nat), forall (_3 : a), forall (_4 : Init.Datatypes.nat), a := - fun (a : Type) (f : forall (_1 : Init.Datatypes.nat), a) (i : Init.Datatypes.nat) (v : a) (x : Init.Datatypes.nat) => if SAWCoreScaffolding.equalNat i x then v else f x. - -Definition updBvFun : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : a), forall (_4 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), a := - fun (n : Init.Datatypes.nat) (a : Type) (f : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), a) (i : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (v : a) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => if bvEq n i x then v else f x. - -(* "Prelude::Float@core" was skipped *) - -(* "Prelude::mkFloat@core" was skipped *) - -(* "Prelude::Double@core" was skipped *) - -(* "Prelude::mkDouble@core" was skipped *) - -(* Prelude::List was skipped *) - -(* "Prelude::List__rec@core" was skipped *) - -Definition unfoldList : forall (a : Type), forall (_1 : @Init.Datatypes.list a), Init.Datatypes.sum SAWCoreScaffolding.UnitType (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType (@Init.Datatypes.list a) SAWCoreScaffolding.UnitType)) := - fun (a : Type) (l : @Init.Datatypes.list a) => let var__0 := @Init.Datatypes.list a in - @Init.Datatypes.list_rect a (fun (_1 : var__0) => Init.Datatypes.sum SAWCoreScaffolding.UnitType (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType))) (@Init.Datatypes.inl SAWCoreScaffolding.UnitType (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) SAWCoreScaffolding.Unit) (fun (x : a) (l1 : var__0) (_1 : Init.Datatypes.sum SAWCoreScaffolding.UnitType (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType))) => @Init.Datatypes.inr SAWCoreScaffolding.UnitType (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) (SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue var__0 SAWCoreScaffolding.UnitType l1 SAWCoreScaffolding.Unit))) l. - -Definition foldList : forall (a : Type), forall (_1 : Init.Datatypes.sum SAWCoreScaffolding.UnitType (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType (@Init.Datatypes.list a) SAWCoreScaffolding.UnitType))), @Init.Datatypes.list a := - fun (a : Type) => let var__0 := @Init.Datatypes.list a in - let var__1 := SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) in - either SAWCoreScaffolding.UnitType var__1 var__0 (fun (_1 : SAWCoreScaffolding.UnitType) => @Init.Datatypes.nil a) (fun (tup : var__1) => @Init.Datatypes.cons a (Pair_fst a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) tup) (Pair_fst var__0 SAWCoreScaffolding.UnitType (Pair_snd a (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) tup))). - -Inductive ListSort : Type := -| LS_Nil : ListSort -| LS_Cons : forall (_1 : Type), forall (_2 : ListSort), ListSort -. - -Definition ListSort__rec : forall (P : forall (_1 : ListSort), Type), forall (_1 : P LS_Nil), forall (_2 : forall (A : Type), forall (l : ListSort), forall (_2 : P l), P (LS_Cons A l)), forall (l : ListSort), P l := - fun (P : forall (_1 : ListSort), Type) (f1 : P LS_Nil) (f2 : forall (A : Type), forall (l : ListSort), forall (_1 : P l), P (LS_Cons A l)) (l : ListSort) => @SAWCorePrelude.ListSort_rect P f1 f2 l. - -Definition listSortGet : forall (_1 : ListSort), forall (_2 : Init.Datatypes.nat), Type := - ListSort__rec (fun (_1 : ListSort) => forall (_2 : Init.Datatypes.nat), Type) (fun (_1 : Init.Datatypes.nat) => @Init.Logic.eq Init.Datatypes.bool Init.Datatypes.true Init.Datatypes.false) (fun (A : Type) (_1 : ListSort) (rec : forall (_2 : Init.Datatypes.nat), Type) => Nat_cases Type A (fun (n : Init.Datatypes.nat) (_2 : Type) => rec n)). - -Definition listSort_cases : forall (a : Type), forall (_1 : a), forall (_2 : forall (_2 : Type), forall (l : ListSort), forall (_3 : a), a), forall (_3 : ListSort), a := - fun (a : Type) (base : a) (f : forall (_1 : Type), forall (l : ListSort), forall (_2 : a), a) (ls : ListSort) => ListSort__rec (fun (_1 : ListSort) => a) base f ls. - -Definition listSortDrop : forall (_1 : ListSort), forall (_2 : Init.Datatypes.nat), ListSort := - fun (ss : ListSort) (n : Init.Datatypes.nat) => SAWCoreScaffolding.Nat__rec (fun (_1 : Init.Datatypes.nat) => forall (_2 : ListSort), ListSort) (fun (l : ListSort) => l) (fun (_1 : Init.Datatypes.nat) (rec_n' : forall (_2 : ListSort), ListSort) (l : ListSort) => rec_n' (listSort_cases ListSort LS_Nil (fun (_2 : Type) (tail : ListSort) (_3 : ListSort) => tail) l)) n ss. - -Definition listSort_length : forall (_1 : ListSort), Init.Datatypes.nat := - listSort_cases Init.Datatypes.nat SAWCoreScaffolding.Zero (fun (_1 : Type) (_2 : ListSort) (n : Init.Datatypes.nat) => SAWCoreScaffolding.Succ n). - -Definition ifLSNil : forall (a : Type), forall (_1 : ListSort), forall (_2 : a), forall (_3 : a), a := - fun (a : Type) (l : ListSort) (x : a) (y : a) => ListSort__rec (fun (_1 : ListSort) => a) x (fun (_1 : Type) (_2 : ListSort) (_3 : a) => y) l. - -Definition FalseProp : Prop := - @Init.Logic.eq Init.Datatypes.bool Init.Datatypes.true Init.Datatypes.false. - -Definition efq : forall (a : Type), forall (_1 : FalseProp), a := - fun (a : Type) (contra : FalseProp) => let var__0 := if Init.Datatypes.true then SAWCoreScaffolding.UnitType else a in - SAWCoreScaffolding.coerce SAWCoreScaffolding.UnitType a (trans Type SAWCoreScaffolding.UnitType var__0 a (sym Type var__0 SAWCoreScaffolding.UnitType (ite_true Type SAWCoreScaffolding.UnitType a)) (trans Type var__0 (if Init.Datatypes.false then SAWCoreScaffolding.UnitType else a) a (eq_cong Init.Datatypes.bool Init.Datatypes.true Init.Datatypes.false contra Type (fun (b : Init.Datatypes.bool) => if b then SAWCoreScaffolding.UnitType else a)) (ite_false Type SAWCoreScaffolding.UnitType a))) SAWCoreScaffolding.Unit. - -Definition Eithers : forall (_1 : ListSort), Type := - ListSort__rec (fun (_1 : ListSort) => Type) FalseProp (fun (tp : Type) (tail : ListSort) (rec : Type) => ifLSNil Type tail tp (Init.Datatypes.sum tp rec)). - -Definition eithers1 : forall (tp : Type), forall (tps : ListSort), forall (a : Type), forall (_1 : Eithers (LS_Cons tp tps)), forall (_2 : forall (_2 : tp), a), forall (_3 : forall (_3 : Eithers tps), a), a := - fun (tp : Type) (tps : ListSort) (a : Type) => ListSort__rec (fun (tps1 : ListSort) => forall (_1 : Eithers (LS_Cons tp tps1)), forall (_2 : forall (_2 : tp), a), forall (_3 : forall (_3 : Eithers tps1), a), a) (fun (eiths : tp) (f : forall (_1 : tp), a) (_1 : forall (_1 : FalseProp), a) => f eiths) (fun (tp2 : Type) (tail : ListSort) (_1 : forall (_1 : Eithers (LS_Cons tp tail)), forall (_2 : forall (_2 : tp), a), forall (_3 : forall (_3 : Eithers tail), a), a) (eiths : Init.Datatypes.sum tp (Eithers (LS_Cons tp2 tail))) (f1 : forall (_2 : tp), a) (f2 : forall (_2 : Eithers (LS_Cons tp2 tail)), a) => either tp (Eithers (LS_Cons tp2 tail)) a f1 f2 eiths) tps. - -Inductive FunsTo (a : Type) : Type := -| FunsTo_Nil : FunsTo a -| FunsTo_Cons : forall (tp : Type), forall (_1 : forall (_1 : tp), a), forall (_2 : FunsTo a), FunsTo a -. - -Definition FunsTo__rec : forall (a : Type), forall (P : forall (_1 : FunsTo a), Type), forall (_1 : P (FunsTo_Nil a)), forall (_2 : forall (tp : Type), forall (f : forall (_2 : tp), a), forall (es : FunsTo a), forall (_2 : P es), P (FunsTo_Cons a tp f es)), forall (es : FunsTo a), P es := - fun (a : Type) (P : forall (_1 : FunsTo a), Type) (f1 : P (FunsTo_Nil a)) (f2 : forall (tp : Type), forall (f : forall (_1 : tp), a), forall (es : FunsTo a), forall (_1 : P es), P (FunsTo_Cons a tp f es)) (es : FunsTo a) => @SAWCorePrelude.FunsTo_rect a P f1 f2 es. - -Definition FunsToIns : forall (a : Type), forall (_1 : FunsTo a), ListSort := - fun (a : Type) => FunsTo__rec a (fun (_1 : FunsTo a) => ListSort) LS_Nil (fun (tp : Type) (_1 : forall (_1 : tp), a) (_2 : FunsTo a) (rec : ListSort) => LS_Cons tp rec). - -Definition eithers : forall (a : Type), forall (elims : FunsTo a), forall (_1 : Eithers (FunsToIns a elims)), a := - fun (a : Type) => FunsTo__rec a (fun (elims : FunsTo a) => forall (_1 : Eithers (FunsToIns a elims)), a) (fun (contra : FalseProp) => efq a contra) (fun (tp : Type) (f : forall (_1 : tp), a) (elims : FunsTo a) (rec : forall (_1 : Eithers (FunsToIns a elims)), a) (eiths : Eithers (LS_Cons tp (FunsToIns a elims))) => eithers1 tp (FunsToIns a elims) a eiths f rec). - -Definition EithersV : forall (_1 : ListSort), Type := - ListSort__rec (fun (_1 : ListSort) => Type) Init.Datatypes.Empty_set (fun (tp : Type) (_1 : ListSort) (rec : Type) => Init.Datatypes.sum tp rec). - -Definition eithersV : forall (a : Type), forall (es : FunsTo a), forall (_1 : EithersV (FunsToIns a es)), a := - fun (a : Type) => FunsTo__rec a (fun (es : FunsTo a) => forall (_1 : EithersV (FunsToIns a es)), a) (fun (v : Init.Datatypes.Empty_set) => elimVoid a v) (fun (tp : Type) (f : forall (_1 : tp), a) (es : FunsTo a) (rec : forall (_1 : EithersV (FunsToIns a es)), a) => either tp (EithersV (FunsToIns a es)) a f rec). - -Definition arrowsType : forall (_1 : ListSort), forall (_2 : Type), Type := - fun (as1 : ListSort) (b : Type) => ListSort__rec (fun (_1 : ListSort) => Type) b (fun (a : Type) (_1 : ListSort) (rec : Type) => forall (_2 : a), rec) as1. - -Definition arrowsSort : forall (_1 : ListSort), Type := - fun (as1 : ListSort) => @SAWCorePrelude.ListSort_rect (fun (_1 : ListSort) => Type) Type (fun (a : Type) (_1 : ListSort) (rec : Type) => forall (_2 : a), rec) as1. - -(* "Prelude::unsafeAssertBVULt@core" was skipped *) - -(* "Prelude::unsafeAssertBVULe@core" was skipped *) - -Axiom bvEqToEq : forall (n : Init.Datatypes.nat), forall (v1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (v2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : @Init.Logic.eq Init.Datatypes.bool (bvEq n v1 v2) Init.Datatypes.true), @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 v2 . - -Definition ifBvEqWithProof : forall (a : Type), forall (n : Init.Datatypes.nat), forall (v1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (v2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : a), forall (_2 : forall (_2 : @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 v2), a), a := - fun (a : Type) (n : Init.Datatypes.nat) (v1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (v2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (x : a) (f : forall (_1 : @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 v2), a) => let var__0 := bvEq n v1 v2 in - ifWithProof a var__0 x (fun (pf : @Init.Logic.eq Init.Datatypes.bool var__0 Init.Datatypes.true) => f (bvEqToEq n v1 v2 pf)). - -Axiom bvEqToEqNat : forall (n : Init.Datatypes.nat), forall (v1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (v2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 v2), eqNat (SAWCoreVectorsAsRocqVectors.bvToNat n v1) (SAWCoreVectorsAsRocqVectors.bvToNat n v2) . - -Axiom bvultToIsLtNat : forall (n : Init.Datatypes.nat), forall (v1 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (v2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : @Init.Logic.eq Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.bvult n v1 v2) Init.Datatypes.true), SAWCoreScaffolding.IsLtNat (SAWCoreVectorsAsRocqVectors.bvToNat n v1) (SAWCoreVectorsAsRocqVectors.bvToNat n v2) . - -(* "Prelude::genWithProof@core" was skipped *) - -(* "Prelude::atWithProof@core" was skipped *) - -Axiom updWithProof : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (i : Init.Datatypes.nat), forall (_2 : a), forall (_3 : SAWCoreScaffolding.IsLtNat i n), SAWCoreVectorsAsRocqVectors.Vec n a . - -Axiom sliceWithProof : forall (a : Type), forall (n : Init.Datatypes.nat), forall (off : Init.Datatypes.nat), forall (len : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.addNat off len) n), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), SAWCoreVectorsAsRocqVectors.Vec len a . - -Axiom updSliceWithProof : forall (a : Type), forall (n : Init.Datatypes.nat), forall (off : Init.Datatypes.nat), forall (len : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.addNat off len) n), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n a), forall (_3 : SAWCoreVectorsAsRocqVectors.Vec len a), SAWCoreVectorsAsRocqVectors.Vec n a . - -Definition is_bvult : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Prop := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.bvult n x y) Init.Datatypes.true. - -Definition is_bvule : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Prop := - fun (n : Init.Datatypes.nat) (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) => @Init.Logic.eq Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.bvule n x y) Init.Datatypes.true. - -Axiom not_bvult_zero : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), @Init.Logic.eq Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.bvult n x (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero)) Init.Datatypes.false . - -Axiom trans_bvult_bvule : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (z : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : is_bvult n x y), forall (_2 : is_bvule n y z), is_bvult n x z . - -Axiom bvult_sub_add_bvult : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (z : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : is_bvule n y z), forall (_2 : is_bvult n x (SAWCoreVectorsAsRocqVectors.bvSub n z y)), is_bvult n (SAWCoreVectorsAsRocqVectors.bvAdd n y x) z . - -Axiom bvult_sum_bvult_sub : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (y : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (z : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_1 : is_bvult n x (SAWCoreVectorsAsRocqVectors.bvAdd n y z)), forall (_2 : @Init.Logic.eq Init.Datatypes.bool (SAWCoreVectorsAsRocqVectors.bvult n x y) Init.Datatypes.false), is_bvult n (SAWCoreVectorsAsRocqVectors.bvSub n x y) z . - -Axiom IsLtNat_to_bvult : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (i : Init.Datatypes.nat), forall (_1 : SAWCoreScaffolding.IsLtNat i (SAWCoreVectorsAsRocqVectors.bvToNat n x)), is_bvult n (SAWCoreVectorsAsRocqVectors.bvNat n i) x . - -Axiom bvult_to_IsLtNat : forall (n : Init.Datatypes.nat), forall (x : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (i : Init.Datatypes.nat), forall (_1 : is_bvult n (SAWCoreVectorsAsRocqVectors.bvNat n i) x), SAWCoreScaffolding.IsLtNat i (SAWCoreVectorsAsRocqVectors.bvToNat n x) . - -Definition BV_complete_induction : forall (w : Init.Datatypes.nat), forall (p : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), Prop), forall (_1 : forall (x : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_1 : forall (y : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_1 : is_bvult w y x), p y), p x), forall (x : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), p x := - fun (w : Init.Datatypes.nat) (p : forall (_1 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), Prop) (f : forall (x : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_1 : forall (y : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_1 : is_bvult w y x), p y), p x) (x : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) => let var__0 := SAWCoreVectorsAsRocqVectors.bvToNat w x in - Nat_complete_induction (fun (n : Init.Datatypes.nat) => forall (x1 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (_1 : SAWCoreScaffolding.IsLeNat (SAWCoreVectorsAsRocqVectors.bvToNat w x1) n), p x1) (fun (n : Init.Datatypes.nat) (Hind : forall (m : Init.Datatypes.nat), forall (Hm : SAWCoreScaffolding.IsLtNat m n), forall (y : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), forall (Hy : SAWCoreScaffolding.IsLeNat (SAWCoreVectorsAsRocqVectors.bvToNat w y) m), p y) (x1 : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (Hx : SAWCoreScaffolding.IsLeNat (SAWCoreVectorsAsRocqVectors.bvToNat w x1) n) => f x1 (fun (y : SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (Hult : is_bvult w y x1) => let var__1 := SAWCoreVectorsAsRocqVectors.bvToNat w y in - Hind var__1 (IsLeNat_transitive (SAWCoreScaffolding.Succ var__1) (SAWCoreVectorsAsRocqVectors.bvToNat w x1) n (bvultToIsLtNat w y x1 Hult) Hx) y (SAWCoreScaffolding.IsLeNat_base var__1))) var__0 x (SAWCoreScaffolding.IsLeNat_base var__0). - -Axiom Array : forall (_1 : Type), forall (_2 : Type), Type . - -Axiom arrayConstant : forall (a : Type), forall (b : Type), forall (_1 : b), Array a b . - -Axiom arrayLookup : forall (a : Type), forall (b : Type), forall (_1 : Array a b), forall (_2 : a), b . - -Axiom arrayUpdate : forall (a : Type), forall (b : Type), forall (_1 : Array a b), forall (_2 : a), forall (_3 : b), Array a b . - -Axiom arrayCopy : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a), forall (_4 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_5 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a . - -Axiom arraySet : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : a), forall (_4 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a . - -Axiom arrayRangeEq : forall (n : Init.Datatypes.nat), forall (a : Type), forall (_1 : Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a), forall (_2 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_3 : Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a), forall (_4 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), forall (_5 : SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), Init.Datatypes.bool . - -Axiom arrayEq : forall (a : Type), forall (b : Type), forall (_1 : Array a b), forall (_2 : Array a b), Init.Datatypes.bool . - -(* "Prelude::Rational@core" was skipped *) - -(* "Prelude::ratio@core" was skipped *) - -(* "Prelude::rationalEq@core" was skipped *) - -(* "Prelude::rationalLe@core" was skipped *) - -(* "Prelude::rationalLt@core" was skipped *) - -(* "Prelude::rationalAdd@core" was skipped *) - -(* "Prelude::rationalSub@core" was skipped *) - -(* "Prelude::rationalMul@core" was skipped *) - -(* "Prelude::rationalNeg@core" was skipped *) - -Definition integerToRational : forall (_1 : SAWCoreScaffolding.Integer), SAWCoreScaffolding.Rational := - fun (x : SAWCoreScaffolding.Integer) => SAWCoreScaffolding.ratio x (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)). - -Definition rationalZero : SAWCoreScaffolding.Rational := - SAWCoreScaffolding.ratio (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero) (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)). - -Definition rationalHalf : SAWCoreScaffolding.Rational := - SAWCoreScaffolding.ratio (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))). - -(* "Prelude::rationalRecip@core" was skipped *) - -Definition rationalDiv : forall (_1 : SAWCoreScaffolding.Rational), forall (_2 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Rational := - fun (x : SAWCoreScaffolding.Rational) (y : SAWCoreScaffolding.Rational) => SAWCoreScaffolding.rationalMul x (SAWCoreScaffolding.rationalRecip y). - -(* "Prelude::rationalFloor@core" was skipped *) - -Definition rationalCeiling : forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer := - fun (r : SAWCoreScaffolding.Rational) => SAWCoreScaffolding.intNeg (SAWCoreScaffolding.rationalFloor (SAWCoreScaffolding.rationalNeg r)). - -Definition rationalTrunc : forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer := - fun (r : SAWCoreScaffolding.Rational) => if SAWCoreScaffolding.rationalLt r rationalZero then rationalCeiling r else SAWCoreScaffolding.rationalFloor r. - -Definition rationalRoundAway : forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer := - fun (r : SAWCoreScaffolding.Rational) => if SAWCoreScaffolding.rationalLt r rationalZero then rationalCeiling (SAWCoreScaffolding.rationalSub r rationalHalf) else SAWCoreScaffolding.rationalFloor (SAWCoreScaffolding.rationalAdd r rationalHalf). - -Definition rationalRoundToEven : forall (_1 : SAWCoreScaffolding.Rational), SAWCoreScaffolding.Integer := - fun (r : SAWCoreScaffolding.Rational) => let var__0 := SAWCoreScaffolding.rationalFloor r in - let var__1 := SAWCoreScaffolding.intAdd var__0 (SAWCoreScaffolding.natToInt (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) in - let var__2 := SAWCoreScaffolding.rationalSub r (integerToRational var__0) in - if SAWCoreScaffolding.rationalLt var__2 rationalHalf then var__0 else if SAWCoreScaffolding.rationalLt rationalHalf var__2 then var__1 else if intEven var__0 then var__0 else var__1. - -(* "Prelude::bveq_sameL@core" was skipped *) - -(* "Prelude::bveq_sameR@core" was skipped *) - -(* "Prelude::bveq_same2@core" was skipped *) - -(* "Prelude::ite_split_cong@core" was skipped *) - -(* "Prelude::ite_join_cong@core" was skipped *) - -(* "Prelude::map_map@core" was skipped *) - -End SAWCorePrelude. - diff --git a/otherTests/saw-core-rocq/test_prelude.saw b/otherTests/saw-core-rocq/test_prelude.saw index 895632e930..fcc3beae76 100644 --- a/otherTests/saw-core-rocq/test_prelude.saw +++ b/otherTests/saw-core-rocq/test_prelude.saw @@ -1 +1 @@ -write_rocq_sawcore_prelude "" [] []; +write_rocq_sawcore_prelude "test_prelude_1.v" [] []; diff --git a/otherTests/saw-core-rocq/test_prelude_1.v.good b/otherTests/saw-core-rocq/test_prelude_1.v.good new file mode 100644 index 0000000000..4f4c96b661 --- /dev/null +++ b/otherTests/saw-core-rocq/test_prelude_1.v.good @@ -0,0 +1,4196 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) + + +(** Code generated by saw-core-rocq *) + +Module SAWCorePrelude. + +(* "Prelude::id@core" was skipped *) + +(* "Prelude::fix@core" was skipped *) + +(* "Prelude::sawLet@core" was skipped *) + +(* "Prelude::UnitType" was skipped *) + +(* "Prelude::UnitType__rec@core" was skipped *) + +(* "Prelude::PairType" was skipped *) + +Definition pair_example: forall (a b: Type) (_1: a) (_2: b), + SAWCoreScaffolding.PairType a b := + fun (a b: Type) (x: a) (y: b) + => + SAWCoreScaffolding.PairValue a b x y + . + +(* "Prelude::Pair__rec@core" was skipped *) + +Definition Pair_fst: forall (a b: Type) (_1: SAWCoreScaffolding.PairType a b), + a := + fun (a b: Type) + => + SAWCoreScaffolding.Pair__rec a b (fun (p: SAWCoreScaffolding.PairType a b) + => + a + ) (fun (x: a) (y: b) => x) + . + +Definition Pair_snd: forall (a b: Type) (_1: SAWCoreScaffolding.PairType a b), + b := + fun (a b: Type) + => + SAWCoreScaffolding.Pair__rec a b (fun (p: SAWCoreScaffolding.PairType a b) + => + b + ) (fun (x: a) (y: b) => y) + . + +(* "Prelude::fst@core" was skipped *) + +(* "Prelude::snd@core" was skipped *) + +Definition uncurry: forall (a b c: Type) (f: forall (_1: a) (_2: b), c) (_1: + SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)), + c := + fun (a b c: Type) (f: forall (_1: a) (_2: b), c) (x: + SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) + => + f (Pair_fst a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) + x) + (Pair_fst b SAWCoreScaffolding.UnitType + (Pair_snd a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x)) + . + +Inductive PairType1 (a b: Type) : Type := +| PairValue1: forall (_1: a) (_2: b), PairType1 a b +. + +Definition fstPairType1: forall (a b: Type) (_1: PairType1 a b), a := + fun (a b: Type) + => + @SAWCorePrelude.PairType1_rect a b (fun (_1: PairType1 a b) => a) (fun + (x: a) (y: b) + => + x + ) + . + +Definition sndPairType1: forall (a b: Type) (_1: PairType1 a b), b := + fun (a b: Type) + => + @SAWCorePrelude.PairType1_rect a b (fun (_1: PairType1 a b) => b) (fun + (x: a) (y: b) + => + y + ) + . + +Definition uncurry1: forall (a b c: Type) (f: forall (_1: a) (_2: b), c) (x: + PairType1 a b), + c := + fun (a b c: Type) (f: forall (_1: a) (_2: b), c) (x: PairType1 a b) + => + f (fstPairType1 a b x) (sndPairType1 a b x) + . + +(* "Prelude::String@core" was skipped *) + +(* "Prelude::error@core" was skipped *) + +(* "Prelude::Void" was skipped *) + +Definition elimVoid: forall (a: Type) (_1: Init.Datatypes.Empty_set), a := + fun (a: Type) (v: Init.Datatypes.Empty_set) + => + @Init.Datatypes.Empty_set_rect (fun (_1: Init.Datatypes.Empty_set) => a) v + . + +(* "Prelude::Eq" was skipped *) + +(* "Prelude::Eq__rec@core" was skipped *) + +(* "Prelude::uip@core" was skipped *) + +Definition eq_cong: forall (t: Type) (x y: t) (_1: @Init.Logic.eq t x y) + (u: Type) (f: forall (_2: t), u), + @Init.Logic.eq u (f x) (f y) := + fun (t: Type) (x y: t) (eq: @Init.Logic.eq t x y) (u: Type) (f: forall + (_1: t), + u) + => + SAWCoreScaffolding.Eq__rec t x (fun (y': t) (eq': @Init.Logic.eq t x y') + => + @Init.Logic.eq u (f x) (f y') + ) (@Init.Logic.eq_refl u (f x)) y eq + . + +Definition sym: forall (a: Type) (x y: a) (_1: @Init.Logic.eq a x y), + @Init.Logic.eq a y x := + fun (a: Type) (x y: a) (eq: @Init.Logic.eq a x y) + => + SAWCoreScaffolding.Eq__rec a x (fun (y': a) (eq': @Init.Logic.eq a x y') + => + @Init.Logic.eq a y' x + ) (@Init.Logic.eq_refl a x) y eq + . + +Definition trans: forall (a: Type) (x y z: a) (_1: @Init.Logic.eq a x y) (_2: + @Init.Logic.eq a y z), + @Init.Logic.eq a x z := + fun (a: Type) (x y z: a) (eq1: @Init.Logic.eq a x y) (eq2: + @Init.Logic.eq a y z) + => + SAWCoreScaffolding.Eq__rec a y (fun (y': a) (eq': @Init.Logic.eq a y y') + => + @Init.Logic.eq a x y' + ) eq1 z eq2 + . + +Definition trans2: forall (a: Type) (x y z: a) (_1: @Init.Logic.eq a x z) (_2: + @Init.Logic.eq a y z), + @Init.Logic.eq a x y := + fun (a: Type) (x y z: a) (eq1: @Init.Logic.eq a x z) (eq2: + @Init.Logic.eq a y z) + => + trans a x z y eq1 (sym a y z eq2) + . + +Definition trans4: forall (a: Type) (w x y z: a) (_1: @Init.Logic.eq a w x) + (_2: @Init.Logic.eq a x y) (_3: @Init.Logic.eq a y z), + @Init.Logic.eq a w z := + fun (a: Type) (w x y z: a) (eq1: @Init.Logic.eq a w x) (eq2: + @Init.Logic.eq a x y) (eq3: @Init.Logic.eq a y z) + => + trans a w x z eq1 (trans a x y z eq2 eq3) + . + +Definition eq_inv_map: forall (a b: Type) (a1 a2: a) (_1: + @Init.Logic.eq a a1 a2) (f1: forall (_2: a), b) (f2: forall (_2: a), + b) (_2: @Init.Logic.eq b (f1 a2) (f2 a2)), + @Init.Logic.eq b (f1 a1) (f2 a1) := + fun (a b: Type) (a1 a2: a) (eq_a: @Init.Logic.eq a a1 a2) (f1: forall + (_1: a), + b) (f2: forall (_1: a), b) (eq_f: + @Init.Logic.eq b (f1 a2) (f2 a2)) + => + let var__0 + := + f1 a2 + in + let var__1 + := + f2 a1 + in + trans b (f1 a1) var__0 var__1 (eq_cong a a1 a2 eq_a b f1) + (trans b var__0 (f2 a2) var__1 eq_f + (eq_cong a a2 a1 (sym a a1 a2 eq_a) b f2)) + . + +Inductive EqDep + (t: Type) + (P: forall (_1: t), Type) + (x: t) + (p: P x) + : forall (y: t) (_1: P y), Prop := +| ReflDep: EqDep t P x p x p +. + +(* "Prelude::fix_unfold@core" was skipped *) + +Definition inverse_eta_rule: forall (a b: Type) (f: forall (_1: a), b) + (g: forall (_1: a), b) (_1: @Init.Logic.eq (forall (_1: a), b) f g) + (x: a), + @Init.Logic.eq b (f x) (g x) := + fun (a b: Type) (f: forall (_1: a), b) (g: forall (_1: a), b) (H: + @Init.Logic.eq (forall (_1: a), b) f g) + => + SAWCoreScaffolding.Eq__rec (forall (_1: a), b) f (fun (g': forall (_1: a), + b) (H': @Init.Logic.eq (forall (_1: a), b) f g') + => + forall (x: a), + @Init.Logic.eq b (f x) (g' x) + ) (fun (x: a) => @Init.Logic.eq_refl b (f x)) g H + . + +(* "Prelude::unsafeAssert@core" was skipped *) + +(* "Prelude::coerce@core" was skipped *) + +(* "Prelude::coerce__def@core" was skipped *) + +(* "Prelude::coerce__eq@core" was skipped *) + +Definition coerce_same: forall (a: Type) (q: @Init.Logic.eq Type a a) (x: a), + @Init.Logic.eq a (SAWCoreScaffolding.coerce a a q x) x := + fun (a: Type) (q: @Init.Logic.eq Type a a) (x: a) + => + let var__0 + := + @Init.Logic.eq Type a a + in + let var__1 + := + @Init.Logic.eq_refl Type a + in + trans a (SAWCoreScaffolding.coerce a a q x) + (SAWCoreScaffolding.coerce a a q x) x + (eq_cong (forall (a1 b: Type) (_1: @Init.Logic.eq Type a1 b) + (_2: a1), + b) SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce + eq_refl a (fun (f: forall (a1 b: Type) (_1: + @Init.Logic.eq Type a1 b) (_2: a1), + b) + => + f a a q x + )) + (eq_cong var__0 q var__1 (UIP Type a a q var__1) a (fun (q': var__0) + => + SAWCoreScaffolding.coerce a a q' x + )) + . + +Definition coerce__def_trans: forall (a b c: Type) (pf1: + @Init.Logic.eq Type a b) (pf2: @Init.Logic.eq Type b c) (x: a), + @Init.Logic.eq c + (SAWCoreScaffolding.coerce b c pf2 + (SAWCoreScaffolding.coerce a b pf1 x)) + (SAWCoreScaffolding.coerce a c (trans Type a b c pf1 pf2) x) := + fun (a b c: Type) (pf1: @Init.Logic.eq Type a b) (pf2: + @Init.Logic.eq Type b c) (x: a) + => + SAWCoreScaffolding.Eq__rec Type b (fun (c': Type) (pf2': + @Init.Logic.eq Type b c') + => + @Init.Logic.eq c' + (SAWCoreScaffolding.coerce b c' pf2' + (SAWCoreScaffolding.coerce a b pf1 x)) + (SAWCoreScaffolding.coerce a c' (trans Type a b c' pf1 pf2') x) + ) (@Init.Logic.eq_refl b (SAWCoreScaffolding.coerce a b pf1 x)) c pf2 + . + +Definition coerce_trans: forall (a b c: Type) (pf1: @Init.Logic.eq Type a b) + (pf2: @Init.Logic.eq Type b c) (x: a), + @Init.Logic.eq c + (SAWCoreScaffolding.coerce b c pf2 + (SAWCoreScaffolding.coerce a b pf1 x)) + (SAWCoreScaffolding.coerce a c (trans Type a b c pf1 pf2) x) := + fun (a b c: Type) (pf1: @Init.Logic.eq Type a b) (pf2: + @Init.Logic.eq Type b c) (x: a) + => + let var__0 + := + trans Type a b c pf1 pf2 + in + trans4 c + (SAWCoreScaffolding.coerce b c pf2 + (SAWCoreScaffolding.coerce a b pf1 x)) + (SAWCoreScaffolding.coerce b c pf2 + (SAWCoreScaffolding.coerce a b pf1 x)) + (SAWCoreScaffolding.coerce a c var__0 x) + (SAWCoreScaffolding.coerce a c var__0 x) + (eq_cong (forall (t u: Type) (_1: @Init.Logic.eq Type t u) (_2: t), u) + SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce eq_refl c (fun + (f: forall (a1 b1: Type) (_1: @Init.Logic.eq Type a1 b1) + (_2: a1), + b1) + => + f b c pf2 (f a b pf1 x) + )) (coerce__def_trans a b c pf1 pf2 x) + (eq_cong (forall (t u: Type) (_1: @Init.Logic.eq Type t u) (_2: t), u) + SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce + (sym (forall (t u: Type) (_1: @Init.Logic.eq Type t u) (_2: t), u) + SAWCoreScaffolding.coerce SAWCoreScaffolding.coerce eq_refl) c + (fun (f: forall (a1 b1: Type) (_1: @Init.Logic.eq Type a1 b1) + (_2: a1), + b1) + => + f a c var__0 x + )) + . + +Definition rcoerce: forall (a b: Type) (_1: @Init.Logic.eq Type a b) (_2: b), + a := + fun (a b: Type) (q: @Init.Logic.eq Type a b) + => + SAWCoreScaffolding.coerce b a (sym Type a b q) + . + +Definition rcoerce_same: forall (a: Type) (q: @Init.Logic.eq Type a a) (x: a), + @Init.Logic.eq a (rcoerce a a q x) x := + fun (a: Type) (q: @Init.Logic.eq Type a a) (x: a) + => + coerce_same a (sym Type a a q) x + . + +(* "Prelude::unsafeCoerce@core" was skipped *) + +(* "Prelude::unsafeCoerce_same@core" was skipped *) + +Definition piCong0: forall (r x y: Type) (_1: @Init.Logic.eq Type x y), + @Init.Logic.eq Type (forall (_2: x), r) (forall (_2: y), r) := + fun (r x y: Type) (eq: @Init.Logic.eq Type x y) + => + SAWCoreScaffolding.Eq__rec Type x (fun (y': Type) (eq': + @Init.Logic.eq Type x y') + => + @Init.Logic.eq Type (forall (_1: x), r) (forall (_1: y'), r) + ) (@Init.Logic.eq_refl Type (forall (_1: x), r)) y eq + . + +Definition piCong1: forall (r x y: Type) (_1: @Init.Logic.eq Type x y), + @Init.Logic.eq Type (forall (_2: r), x) (forall (_2: r), y) := + fun (r x y: Type) (eq: @Init.Logic.eq Type x y) + => + SAWCoreScaffolding.Eq__rec Type x (fun (y': Type) (eq': + @Init.Logic.eq Type x y') + => + @Init.Logic.eq Type (forall (_1: r), x) (forall (_1: r), y') + ) (@Init.Logic.eq_refl Type (forall (_1: r), x)) y eq + . + +Definition PairValue_fst_snd: forall (a b: Type) (x: + SAWCoreScaffolding.PairType a b), + @Init.Logic.eq (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairValue a b (Pair_fst a b x) (Pair_snd a b x)) + x := + fun (a b: Type) + => + @SAWCoreScaffolding.PairType_rect a b (fun (x: + SAWCoreScaffolding.PairType a b) + => + @Init.Logic.eq (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairValue a b (Pair_fst a b x) + (Pair_snd a b x)) x + ) (fun (x1: a) (x2: b) + => + @Init.Logic.eq_refl (SAWCoreScaffolding.PairType a b) + (SAWCoreScaffolding.PairValue a b x1 x2) + ) + . + +Definition PairValue_fst_Unit: forall (a: Type) (x: + SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType), + @Init.Logic.eq + (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType + (Pair_fst a SAWCoreScaffolding.UnitType x) + SAWCoreScaffolding.Unit) x := + fun (a: Type) + => + @SAWCoreScaffolding.PairType_rect a SAWCoreScaffolding.UnitType (fun (x: + SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) + => + @Init.Logic.eq + (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType + (Pair_fst a SAWCoreScaffolding.UnitType x) + SAWCoreScaffolding.Unit) x + ) (fun (x1: a) + => + @SAWCoreScaffolding.UnitType_rect (fun + (u: SAWCoreScaffolding.UnitType) + => + @Init.Logic.eq + (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType + x1 SAWCoreScaffolding.Unit) + (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType + x1 u) + ) (@Init.Logic.eq_refl + (SAWCoreScaffolding.PairType a SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue a SAWCoreScaffolding.UnitType x1 + SAWCoreScaffolding.Unit)) + ) + . + +(* "Prelude::EmptyType" was skipped *) + +(* "Prelude::EmptyType__rec@core" was skipped *) + +(* "Prelude::RecordType" was skipped *) + +(* "Prelude::RecordType__rec@core" was skipped *) + +(* "Prelude::headRecord@core" was skipped *) + +(* "Prelude::tailRecord@core" was skipped *) + +Definition headRecord_RecordValue: forall (s: Stdlib.Strings.String.string) + (a b: Type) (x: a) (y: b), + @Init.Logic.eq a + (@SAWCoreScaffolding.recordHead s a b + (@SAWCoreScaffolding.RecordCons s a b x y)) x := + fun (s: Stdlib.Strings.String.string) (a b: Type) (x: a) (y: b) + => + @Init.Logic.eq_refl a x + . + +Definition tailRecord_RecordValue: forall (s: Stdlib.Strings.String.string) + (a b: Type) (x: a) (y: b), + @Init.Logic.eq b + (@SAWCoreScaffolding.recordTail s a b + (@SAWCoreScaffolding.RecordCons s a b x y)) y := + fun (s: Stdlib.Strings.String.string) (a b: Type) (x: a) (y: b) + => + @Init.Logic.eq_refl b y + . + +Definition RecordValue_head_tail: forall (s: Stdlib.Strings.String.string) + (a b: Type) (x: SAWCoreScaffolding.RecordTypeCons s a b), + @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a b) + (@SAWCoreScaffolding.RecordCons s a b + (@SAWCoreScaffolding.recordHead s a b x) + (@SAWCoreScaffolding.recordTail s a b x)) x := + fun (s: Stdlib.Strings.String.string) (a b: Type) + => + @SAWCoreScaffolding.RecordTypeCons_rect s a b (fun (x: + SAWCoreScaffolding.RecordTypeCons s a b) + => + @Init.Logic.eq (SAWCoreScaffolding.RecordTypeCons s a b) + (@SAWCoreScaffolding.RecordCons s a b + (@SAWCoreScaffolding.recordHead s a b x) + (@SAWCoreScaffolding.recordTail s a b x)) x + ) (fun (x1: a) (x2: b) + => + @Init.Logic.eq_refl (SAWCoreScaffolding.RecordTypeCons s a b) + (@SAWCoreScaffolding.RecordCons s a b x1 x2) + ) + . + +Definition RecordValue_head_Empty: forall (s: Stdlib.Strings.String.string) + (a: Type) (x: + SAWCoreScaffolding.RecordTypeCons s a + SAWCoreScaffolding.RecordTypeNil), + @Init.Logic.eq + (SAWCoreScaffolding.RecordTypeCons s a + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons s a SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordHead s a + SAWCoreScaffolding.RecordTypeNil x) + SAWCoreScaffolding.RecordNil) x := + fun (s: Stdlib.Strings.String.string) (a: Type) + => + @SAWCoreScaffolding.RecordTypeCons_rect s a + SAWCoreScaffolding.RecordTypeNil (fun (x: + SAWCoreScaffolding.RecordTypeCons s a + SAWCoreScaffolding.RecordTypeNil) + => + @Init.Logic.eq + (SAWCoreScaffolding.RecordTypeCons s a + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons s a + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordHead s a + SAWCoreScaffolding.RecordTypeNil x) + SAWCoreScaffolding.RecordNil) x + ) (fun (x1: a) + => + @SAWCoreScaffolding.RecordTypeNil_rect (fun + (u: SAWCoreScaffolding.RecordTypeNil) + => + @Init.Logic.eq + (SAWCoreScaffolding.RecordTypeCons s a + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons s a + SAWCoreScaffolding.RecordTypeNil x1 + SAWCoreScaffolding.RecordNil) + (@SAWCoreScaffolding.RecordCons s a + SAWCoreScaffolding.RecordTypeNil x1 u) + ) (@Init.Logic.eq_refl + (SAWCoreScaffolding.RecordTypeCons s a + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons s a + SAWCoreScaffolding.RecordTypeNil x1 + SAWCoreScaffolding.RecordNil)) + ) + . + +(* "Prelude::Bool" was skipped *) + +(* "Prelude::iteDep@core" was skipped *) + +(* "Prelude::iteDep_True@core" was skipped *) + +(* "Prelude::iteDep_False@core" was skipped *) + +(* "Prelude::ite@core" was skipped *) + +(* "Prelude::ite_eq_iteDep@core" was skipped *) + +Definition ite_true: forall (a: Type) (x y: a), + @Init.Logic.eq a (if Init.Datatypes.true then x else y) x := + fun (a: Type) (x y: a) + => + trans a (if Init.Datatypes.true then x else y) + (SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) => a) + Init.Datatypes.true x y) x + (SAWCoreScaffolding.ite_eq_iteDep a Init.Datatypes.true x y) + (SAWCoreScaffolding.iteDep_True (fun (_1: Init.Datatypes.bool) => a) + x y) + . + +Definition ite_false: forall (a: Type) (x y: a), + @Init.Logic.eq a (if Init.Datatypes.false then x else y) y := + fun (a: Type) (x y: a) + => + trans a (if Init.Datatypes.false then x else y) + (SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) => a) + Init.Datatypes.false x y) y + (SAWCoreScaffolding.ite_eq_iteDep a Init.Datatypes.false x y) + (SAWCoreScaffolding.iteDep_False (fun (_1: Init.Datatypes.bool) + => + a + ) x y) + . + +Definition iteWithProof: forall (a: Type) (b: Init.Datatypes.bool) (_1: forall + (_1: @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), + a) (_2: forall (_2: + @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.false), + a), + a := + fun (a: Type) (b: Init.Datatypes.bool) (f1: forall (_1: + @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), + a) (f2: forall (_1: + @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.false), + a) + => + SAWCoreScaffolding.iteDep (fun (b1: Init.Datatypes.bool) + => + forall (_1: @Init.Logic.eq Init.Datatypes.bool b b1), + a + ) b f1 f2 (@Init.Logic.eq_refl Init.Datatypes.bool b) + . + +Definition ifWithProof: forall (a: Type) (b: Init.Datatypes.bool) (_1: a) + (_2: forall (_2: + @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), + a), + a := + fun (a: Type) (b: Init.Datatypes.bool) (x: a) (f: forall (_1: + @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.true), + a) + => + iteWithProof a b f (fun (_1: + @Init.Logic.eq Init.Datatypes.bool b Init.Datatypes.false) + => + x + ) + . + +(* "Prelude::not@core" was skipped *) + +(* "Prelude::and@core" was skipped *) + +(* "Prelude::or@core" was skipped *) + +(* "Prelude::xor@core" was skipped *) + +(* "Prelude::boolEq@core" was skipped *) + +(* "Prelude::not__eq@core" was skipped *) + +(* "Prelude::and__eq@core" was skipped *) + +(* "Prelude::or__eq@core" was skipped *) + +(* "Prelude::xor__eq@core" was skipped *) + +(* "Prelude::boolEq__eq@core" was skipped *) + +Definition implies: forall (_1 _2: Init.Datatypes.bool), Init.Datatypes.bool := + fun (a b: Init.Datatypes.bool) + => + Init.Datatypes.orb (Init.Datatypes.negb a) b + . + +Definition implies__eq: forall (a b: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (implies a b) + (Init.Datatypes.orb (Init.Datatypes.negb a) b) := + fun (a b: Init.Datatypes.bool) + => + @Init.Logic.eq_refl Init.Datatypes.bool (implies a b) + . + +Definition unitEq: forall (_1 _2: SAWCoreScaffolding.UnitType), + Init.Datatypes.bool := + fun (_1 _2: SAWCoreScaffolding.UnitType) + => + Init.Datatypes.true + . + +Definition pairEq: forall (a b: Type) (_1: forall (_1 _2: a), + Init.Datatypes.bool) (_2: forall (_2 _3: b), + Init.Datatypes.bool) (_3 _4: SAWCoreScaffolding.PairType a b), + Init.Datatypes.bool := + fun (a b: Type) (f: forall (_1 _2: a), Init.Datatypes.bool) (g: forall + (_1 _2: b), + Init.Datatypes.bool) (x y: SAWCoreScaffolding.PairType a b) + => + Init.Datatypes.andb (f (Pair_fst a b x) (Pair_fst a b y)) + (g (Pair_snd a b x) (Pair_snd a b y)) + . + +Definition not_True: + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.true) + Init.Datatypes.false := + trans Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.true) + (if Init.Datatypes.true then + Init.Datatypes.false + else + Init.Datatypes.true) Init.Datatypes.false + (SAWCoreScaffolding.not__eq Init.Datatypes.true) + (ite_true Init.Datatypes.bool Init.Datatypes.false + Init.Datatypes.true). + +Definition not_False: + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.false) + Init.Datatypes.true := + trans Init.Datatypes.bool (Init.Datatypes.negb Init.Datatypes.false) + (if Init.Datatypes.false then + Init.Datatypes.false + else + Init.Datatypes.true) Init.Datatypes.true + (SAWCoreScaffolding.not__eq Init.Datatypes.false) + (ite_false Init.Datatypes.bool Init.Datatypes.false + Init.Datatypes.true). + +Definition not_not: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.negb (Init.Datatypes.negb x)) x := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + let var__1 + := + Init.Datatypes.negb Init.Datatypes.false + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.negb (Init.Datatypes.negb b)) b + ) x (trans Init.Datatypes.bool (Init.Datatypes.negb var__0) var__1 + Init.Datatypes.true + (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True + Init.Datatypes.bool Init.Datatypes.negb) not_False) + (trans Init.Datatypes.bool (Init.Datatypes.negb var__1) var__0 + Init.Datatypes.false + (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true not_False + Init.Datatypes.bool Init.Datatypes.negb) not_True) + . + +Definition and_True1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb Init.Datatypes.true x) x := + fun (x: Init.Datatypes.bool) + => + trans Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.true x) + (if Init.Datatypes.true then x else Init.Datatypes.false) x + (SAWCoreScaffolding.and__eq Init.Datatypes.true x) + (ite_true Init.Datatypes.bool x Init.Datatypes.false) + . + +Definition and_False1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb Init.Datatypes.false x) Init.Datatypes.false := + fun (x: Init.Datatypes.bool) + => + trans Init.Datatypes.bool (Init.Datatypes.andb Init.Datatypes.false x) + (if Init.Datatypes.false then x else Init.Datatypes.false) + Init.Datatypes.false + (SAWCoreScaffolding.and__eq Init.Datatypes.false x) + (ite_false Init.Datatypes.bool x Init.Datatypes.false) + . + +Definition and_True2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb x Init.Datatypes.true) x := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb b Init.Datatypes.true) b + ) x (and_True1 Init.Datatypes.true) (and_False1 Init.Datatypes.true) + . + +Definition and_False2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb x Init.Datatypes.false) Init.Datatypes.false := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb b Init.Datatypes.false) Init.Datatypes.false + ) x (and_True1 Init.Datatypes.false) (and_False1 Init.Datatypes.false) + . + +Definition and_assoc: forall (x y z: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb x (Init.Datatypes.andb y z)) + (Init.Datatypes.andb (Init.Datatypes.andb x y) z) := + fun (x y z: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.andb x + in + let var__1 + := + Init.Datatypes.andb x y + in + let var__2 + := + Init.Datatypes.andb y Init.Datatypes.true + in + let var__3 + := + Init.Datatypes.andb y Init.Datatypes.false + in + let var__4 + := + Init.Datatypes.andb x var__3 + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb x (Init.Datatypes.andb y b)) + (Init.Datatypes.andb var__1 b) + ) z (trans2 Init.Datatypes.bool (Init.Datatypes.andb x var__2) + (Init.Datatypes.andb var__1 Init.Datatypes.true) var__1 + (eq_cong Init.Datatypes.bool var__2 y (and_True2 y) + Init.Datatypes.bool var__0) (and_True2 var__1)) + (trans2 Init.Datatypes.bool var__4 + (Init.Datatypes.andb var__1 Init.Datatypes.false) + Init.Datatypes.false + (trans Init.Datatypes.bool var__4 + (Init.Datatypes.andb x Init.Datatypes.false) + Init.Datatypes.false + (eq_cong Init.Datatypes.bool var__3 Init.Datatypes.false + (and_False2 y) Init.Datatypes.bool var__0) (and_False2 x)) + (and_False2 var__1)) + . + +Definition and_idem: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb x x) x := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.andb b b) b + ) x (and_True1 Init.Datatypes.true) (and_False1 Init.Datatypes.false) + . + +Definition or_True1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb Init.Datatypes.true x) Init.Datatypes.true := + fun (x: Init.Datatypes.bool) + => + trans Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.true x) + (if Init.Datatypes.true then Init.Datatypes.true else x) + Init.Datatypes.true + (SAWCoreScaffolding.or__eq Init.Datatypes.true x) + (ite_true Init.Datatypes.bool Init.Datatypes.true x) + . + +Definition or_False1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb Init.Datatypes.false x) x := + fun (x: Init.Datatypes.bool) + => + trans Init.Datatypes.bool (Init.Datatypes.orb Init.Datatypes.false x) + (if Init.Datatypes.false then Init.Datatypes.true else x) x + (SAWCoreScaffolding.or__eq Init.Datatypes.false x) + (ite_false Init.Datatypes.bool Init.Datatypes.true x) + . + +Definition or_True2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb x Init.Datatypes.true) Init.Datatypes.true := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb b Init.Datatypes.true) Init.Datatypes.true + ) x (or_True1 Init.Datatypes.true) (or_False1 Init.Datatypes.true) + . + +Definition or_False2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb x Init.Datatypes.false) x := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb b Init.Datatypes.false) b + ) x (or_True1 Init.Datatypes.false) (or_False1 Init.Datatypes.false) + . + +Definition or_assoc: forall (x y z: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb x (Init.Datatypes.orb y z)) + (Init.Datatypes.orb (Init.Datatypes.orb x y) z) := + fun (x y z: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.orb x + in + let var__1 + := + Init.Datatypes.orb x y + in + let var__2 + := + Init.Datatypes.orb y Init.Datatypes.true + in + let var__3 + := + Init.Datatypes.orb x var__2 + in + let var__4 + := + Init.Datatypes.orb y Init.Datatypes.false + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb x (Init.Datatypes.orb y b)) + (Init.Datatypes.orb var__1 b) + ) z (trans2 Init.Datatypes.bool var__3 + (Init.Datatypes.orb var__1 Init.Datatypes.true) Init.Datatypes.true + (trans Init.Datatypes.bool var__3 + (Init.Datatypes.orb x Init.Datatypes.true) Init.Datatypes.true + (eq_cong Init.Datatypes.bool var__2 Init.Datatypes.true + (or_True2 y) Init.Datatypes.bool var__0) (or_True2 x)) + (or_True2 var__1)) + (trans2 Init.Datatypes.bool (Init.Datatypes.orb x var__4) + (Init.Datatypes.orb var__1 Init.Datatypes.false) var__1 + (eq_cong Init.Datatypes.bool var__4 y (or_False2 y) + Init.Datatypes.bool var__0) (or_False2 var__1)) + . + +Definition or_idem: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb x x) x := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.orb b b) b + ) x (or_True1 Init.Datatypes.true) (or_False1 Init.Datatypes.false) + . + +Definition implies_True1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (implies Init.Datatypes.true x) x := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + trans Init.Datatypes.bool (Init.Datatypes.orb var__0 x) + (Init.Datatypes.orb Init.Datatypes.false x) x + (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false not_True + Init.Datatypes.bool (fun (y: Init.Datatypes.bool) + => + Init.Datatypes.orb y x + )) (or_False1 x) + . + +Definition implies_False1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (implies Init.Datatypes.false x) + Init.Datatypes.true := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.false + in + trans Init.Datatypes.bool (Init.Datatypes.orb var__0 x) + (Init.Datatypes.orb Init.Datatypes.true x) Init.Datatypes.true + (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.true not_False + Init.Datatypes.bool (fun (y: Init.Datatypes.bool) + => + Init.Datatypes.orb y x + )) (or_True1 x) + . + +Definition true_implies: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (implies Init.Datatypes.true x) x := + fun (x: Init.Datatypes.bool) + => + implies_True1 x + . + +Definition xor_True1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.xorb Init.Datatypes.true x) + (Init.Datatypes.negb x) := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb x + in + trans Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.true x) + (if Init.Datatypes.true then var__0 else x) var__0 + (SAWCoreScaffolding.xor__eq Init.Datatypes.true x) + (ite_true Init.Datatypes.bool var__0 x) + . + +Definition xor_False1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.xorb Init.Datatypes.false x) x := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb x + in + trans Init.Datatypes.bool (Init.Datatypes.xorb Init.Datatypes.false x) + (if Init.Datatypes.false then var__0 else x) x + (SAWCoreScaffolding.xor__eq Init.Datatypes.false x) + (ite_false Init.Datatypes.bool var__0 x) + . + +Definition xor_False2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.xorb x Init.Datatypes.false) x := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.xorb b Init.Datatypes.false) b + ) x (trans Init.Datatypes.bool + (Init.Datatypes.xorb Init.Datatypes.true Init.Datatypes.false) + (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true + (xor_True1 Init.Datatypes.false) not_False) + (xor_False1 Init.Datatypes.false) + . + +Definition xor_True2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.xorb x Init.Datatypes.true) + (Init.Datatypes.negb x) := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.xorb b Init.Datatypes.true) + (Init.Datatypes.negb b) + ) x (xor_True1 Init.Datatypes.true) + (trans2 Init.Datatypes.bool + (Init.Datatypes.xorb Init.Datatypes.false Init.Datatypes.true) + (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true + (xor_False1 Init.Datatypes.true) not_False) + . + +Definition xor_same: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb x x) + Init.Datatypes.false := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (Init.Datatypes.xorb b b) + Init.Datatypes.false + ) x (trans Init.Datatypes.bool + (Init.Datatypes.xorb Init.Datatypes.true Init.Datatypes.true) + (Init.Datatypes.negb Init.Datatypes.true) Init.Datatypes.false + (xor_True1 Init.Datatypes.true) not_True) + (xor_False1 Init.Datatypes.false) + . + +Definition boolEq_True1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.true x) x := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb x + in + trans Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.true x) + (if Init.Datatypes.true then x else var__0) x + (SAWCoreScaffolding.boolEqb__eq Init.Datatypes.true x) + (ite_true Init.Datatypes.bool x var__0) + . + +Definition boolEq_False1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.false x) + (Init.Datatypes.negb x) := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb x + in + trans Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.false x) + (if Init.Datatypes.false then x else var__0) var__0 + (SAWCoreScaffolding.boolEqb__eq Init.Datatypes.false x) + (ite_false Init.Datatypes.bool x var__0) + . + +Definition boolEq_True2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb x Init.Datatypes.true) x := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb b Init.Datatypes.true) b + ) x (boolEq_True1 Init.Datatypes.true) + (trans Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.false + Init.Datatypes.true) (Init.Datatypes.negb Init.Datatypes.true) + Init.Datatypes.false (boolEq_False1 Init.Datatypes.true) + not_True) + . + +Definition boolEq_False2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb x Init.Datatypes.false) + (Init.Datatypes.negb x) := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb b Init.Datatypes.false) + (Init.Datatypes.negb b) + ) x (trans2 Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.true + Init.Datatypes.false) (Init.Datatypes.negb Init.Datatypes.true) + Init.Datatypes.false (boolEq_True1 Init.Datatypes.false) not_True) + (boolEq_False1 Init.Datatypes.false) + . + +Definition boolEq_same: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb x x) + Init.Datatypes.true := + fun (x: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.boolEqb b b) + Init.Datatypes.true + ) x (boolEq_True1 Init.Datatypes.true) + (trans Init.Datatypes.bool + (SAWCoreScaffolding.boolEqb Init.Datatypes.false + Init.Datatypes.false) + (Init.Datatypes.negb Init.Datatypes.false) Init.Datatypes.true + (boolEq_False1 Init.Datatypes.false) not_False) + . + +Definition not_or: forall (x y: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.negb (Init.Datatypes.orb x y)) + (Init.Datatypes.andb (Init.Datatypes.negb x) + (Init.Datatypes.negb y)) := + fun (x y: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + let var__1 + := + Init.Datatypes.negb Init.Datatypes.false + in + let var__2 + := + Init.Datatypes.negb y + in + let var__3 + := + Init.Datatypes.andb var__0 var__2 + in + let var__4 + := + Init.Datatypes.orb Init.Datatypes.true y + in + let var__5 + := + Init.Datatypes.negb var__4 + in + let var__6 + := + Init.Datatypes.andb var__1 var__2 + in + let var__7 + := + Init.Datatypes.orb Init.Datatypes.false y + in + let var__8 + := + Init.Datatypes.andb Init.Datatypes.false var__2 + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.negb (Init.Datatypes.orb b y)) + (Init.Datatypes.andb (Init.Datatypes.negb b) var__2) + ) x (trans Init.Datatypes.bool var__5 Init.Datatypes.false var__3 + (trans Init.Datatypes.bool var__5 var__0 Init.Datatypes.false + (eq_cong Init.Datatypes.bool var__4 Init.Datatypes.true + (or_True1 y) Init.Datatypes.bool Init.Datatypes.negb) + not_True) + (trans Init.Datatypes.bool Init.Datatypes.false var__8 var__3 + (sym Init.Datatypes.bool var__8 Init.Datatypes.false + (and_False1 var__2)) + (eq_cong Init.Datatypes.bool Init.Datatypes.false var__0 + (sym Init.Datatypes.bool var__0 Init.Datatypes.false + not_True) Init.Datatypes.bool (fun + (z: Init.Datatypes.bool) + => + Init.Datatypes.andb z var__2 + )))) + (trans Init.Datatypes.bool (Init.Datatypes.negb var__7) var__2 var__6 + (eq_cong Init.Datatypes.bool var__7 y (or_False1 y) + Init.Datatypes.bool Init.Datatypes.negb) + (sym Init.Datatypes.bool var__6 var__2 + (trans Init.Datatypes.bool var__6 + (Init.Datatypes.andb Init.Datatypes.true var__2) var__2 + (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true + not_False Init.Datatypes.bool (fun + (z: Init.Datatypes.bool) + => + Init.Datatypes.andb z var__2 + )) (and_True1 var__2)))) + . + +Definition not_and: forall (x y: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.negb (Init.Datatypes.andb x y)) + (Init.Datatypes.orb (Init.Datatypes.negb x) + (Init.Datatypes.negb y)) := + fun (x y: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + let var__1 + := + Init.Datatypes.negb Init.Datatypes.false + in + let var__2 + := + Init.Datatypes.negb y + in + let var__3 + := + Init.Datatypes.orb var__0 var__2 + in + let var__4 + := + Init.Datatypes.andb Init.Datatypes.true y + in + let var__5 + := + Init.Datatypes.orb var__1 var__2 + in + let var__6 + := + Init.Datatypes.andb Init.Datatypes.false y + in + let var__7 + := + Init.Datatypes.negb var__6 + in + let var__8 + := + Init.Datatypes.orb Init.Datatypes.true var__2 + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.negb (Init.Datatypes.andb b y)) + (Init.Datatypes.orb (Init.Datatypes.negb b) var__2) + ) x (trans Init.Datatypes.bool (Init.Datatypes.negb var__4) var__2 + var__3 + (eq_cong Init.Datatypes.bool var__4 y (and_True1 y) + Init.Datatypes.bool Init.Datatypes.negb) + (sym Init.Datatypes.bool var__3 var__2 + (trans Init.Datatypes.bool var__3 + (Init.Datatypes.orb Init.Datatypes.false var__2) var__2 + (eq_cong Init.Datatypes.bool var__0 + Init.Datatypes.false not_True Init.Datatypes.bool + (fun (z: Init.Datatypes.bool) + => + Init.Datatypes.orb z var__2 + )) (or_False1 var__2)))) + (trans Init.Datatypes.bool var__7 Init.Datatypes.true var__5 + (trans Init.Datatypes.bool var__7 var__1 Init.Datatypes.true + (eq_cong Init.Datatypes.bool var__6 Init.Datatypes.false + (and_False1 y) Init.Datatypes.bool Init.Datatypes.negb) + not_False) + (trans Init.Datatypes.bool Init.Datatypes.true var__8 var__5 + (sym Init.Datatypes.bool var__8 Init.Datatypes.true + (or_True1 var__2)) + (eq_cong Init.Datatypes.bool Init.Datatypes.true var__1 + (sym Init.Datatypes.bool var__1 Init.Datatypes.true + not_False) Init.Datatypes.bool (fun + (z: Init.Datatypes.bool) + => + Init.Datatypes.orb z var__2 + )))) + . + +Definition ite_not: forall (a: Type) (b: Init.Datatypes.bool) (x y: a), + @Init.Logic.eq a (if Init.Datatypes.negb b then x else y) (if b then + y + else + x) := + fun (a: Type) (b: Init.Datatypes.bool) (x y: a) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + let var__1 + := + Init.Datatypes.negb Init.Datatypes.false + in + let var__2 + := + if Init.Datatypes.true then + y + else + x + in + let var__3 + := + if var__0 then + x + else + y + in + let var__4 + := + if Init.Datatypes.false then + y + else + x + in + let var__5 + := + if var__1 then + x + else + y + in + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq a (if Init.Datatypes.negb b' then x else y) + (if b' then y else x) + ) b (trans a var__3 y var__2 + (trans a var__3 (if Init.Datatypes.false then x else y) y + (eq_cong Init.Datatypes.bool var__0 Init.Datatypes.false + not_True a (fun (z: Init.Datatypes.bool) + => + if z then + x + else + y + )) (ite_false a x y)) (sym a var__2 y (ite_true a y x))) + (trans a var__5 x var__4 + (trans a var__5 (if Init.Datatypes.true then x else y) x + (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true + not_False a (fun (z: Init.Datatypes.bool) + => + if z then + x + else + y + )) (ite_true a x y)) (sym a var__4 x (ite_false a y x))) + . + +Definition ite_nest1: forall (a: Type) (b: Init.Datatypes.bool) (x y z: a), + @Init.Logic.eq a (if b then if b then x else y else z) (if b then + x + else + z) := + fun (a: Type) (b: Init.Datatypes.bool) (x y z: a) + => + let var__0 + := + if Init.Datatypes.true then + x + else + z + in + let var__1 + := + if Init.Datatypes.true then + x + else + y + in + let var__2 + := + if Init.Datatypes.true then + var__1 + else + z + in + let var__3 + := + if Init.Datatypes.false then + x + else + z + in + let var__4 + := + if Init.Datatypes.false then + x + else + y + in + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq a (if b' then if b' then x else y else z) (if b' then + x + else + z) + ) b (trans a var__2 x var__0 + (trans a var__2 var__1 x (ite_true a var__1 z) (ite_true a x y)) + (sym a var__0 x (ite_true a x z))) + (trans a (if Init.Datatypes.false then var__4 else z) z var__3 + (ite_false a var__4 z) (sym a var__3 z (ite_false a x z))) + . + +Definition ite_nest2: forall (a: Type) (b: Init.Datatypes.bool) (x y z: a), + @Init.Logic.eq a (if b then x else if b then y else z) (if b then + x + else + z) := + fun (a: Type) (b: Init.Datatypes.bool) (x y z: a) + => + let var__0 + := + if Init.Datatypes.true then + x + else + z + in + let var__1 + := + if Init.Datatypes.true then + y + else + z + in + let var__2 + := + if Init.Datatypes.false then + x + else + z + in + let var__3 + := + if Init.Datatypes.false then + y + else + z + in + let var__4 + := + if Init.Datatypes.false then + x + else + var__3 + in + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq a (if b' then x else if b' then y else z) (if b' then + x + else + z) + ) b (trans a (if Init.Datatypes.true then x else var__1) x var__0 + (ite_true a x var__1) (sym a var__0 x (ite_true a x z))) + (trans a var__4 z var__2 + (trans a var__4 var__3 z (ite_false a x var__3) + (ite_false a y z)) (sym a var__2 z (ite_false a x z))) + . + +(* "Prelude::ite_bit@core" was skipped *) + +Definition ite_bit_false_1: forall (b c: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (if b then + Init.Datatypes.false + else + c) (Init.Datatypes.andb (Init.Datatypes.negb b) c) := + fun (b c: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + let var__1 + := + Init.Datatypes.negb Init.Datatypes.false + in + let var__2 + := + Init.Datatypes.andb var__0 c + in + let var__3 + := + Init.Datatypes.andb var__1 c + in + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (if b' then + Init.Datatypes.false + else + c) (Init.Datatypes.andb (Init.Datatypes.negb b') c) + ) b (trans Init.Datatypes.bool (if Init.Datatypes.true then + Init.Datatypes.false + else + c) Init.Datatypes.false var__2 + (ite_true Init.Datatypes.bool Init.Datatypes.false c) + (sym Init.Datatypes.bool var__2 Init.Datatypes.false + (trans Init.Datatypes.bool var__2 + (Init.Datatypes.andb Init.Datatypes.false c) + Init.Datatypes.false + (eq_cong Init.Datatypes.bool var__0 + Init.Datatypes.false not_True Init.Datatypes.bool + (fun (z: Init.Datatypes.bool) + => + Init.Datatypes.andb z c + )) (and_False1 c)))) + (trans Init.Datatypes.bool (if Init.Datatypes.false then + Init.Datatypes.false + else + c) c var__3 + (ite_false Init.Datatypes.bool Init.Datatypes.false c) + (sym Init.Datatypes.bool var__3 c + (trans Init.Datatypes.bool var__3 + (Init.Datatypes.andb Init.Datatypes.true c) c + (eq_cong Init.Datatypes.bool var__1 Init.Datatypes.true + not_False Init.Datatypes.bool (fun + (z: Init.Datatypes.bool) + => + Init.Datatypes.andb z c + )) (and_True1 c)))) + . + +Definition ite_bit_true_1: forall (b c: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (if b then + Init.Datatypes.true + else + c) (Init.Datatypes.orb b c) := + fun (b c: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.orb Init.Datatypes.true c + in + let var__1 + := + Init.Datatypes.orb Init.Datatypes.false c + in + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (if b' then + Init.Datatypes.true + else + c) (Init.Datatypes.orb b' c) + ) b (trans Init.Datatypes.bool (if Init.Datatypes.true then + Init.Datatypes.true + else + c) Init.Datatypes.true var__0 + (ite_true Init.Datatypes.bool Init.Datatypes.true c) + (sym Init.Datatypes.bool var__0 Init.Datatypes.true + (or_True1 c))) + (trans Init.Datatypes.bool (if Init.Datatypes.false then + Init.Datatypes.true + else + c) c var__1 + (ite_false Init.Datatypes.bool Init.Datatypes.true c) + (sym Init.Datatypes.bool var__1 c (or_False1 c))) + . + +Definition ite_fold_not: forall (b: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool (if b then + Init.Datatypes.false + else + Init.Datatypes.true) (Init.Datatypes.negb b) := + fun (b: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + let var__1 + := + Init.Datatypes.negb Init.Datatypes.false + in + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool (if b' then + Init.Datatypes.false + else + Init.Datatypes.true) (Init.Datatypes.negb b') + ) b (trans Init.Datatypes.bool (if Init.Datatypes.true then + Init.Datatypes.false + else + Init.Datatypes.true) Init.Datatypes.false var__0 + (ite_true Init.Datatypes.bool Init.Datatypes.false + Init.Datatypes.true) + (sym Init.Datatypes.bool var__0 Init.Datatypes.false not_True)) + (trans Init.Datatypes.bool (if Init.Datatypes.false then + Init.Datatypes.false + else + Init.Datatypes.true) Init.Datatypes.true var__1 + (ite_false Init.Datatypes.bool Init.Datatypes.false + Init.Datatypes.true) + (sym Init.Datatypes.bool var__1 Init.Datatypes.true not_False)) + . + +Definition ite_eq: forall (a: Type) (b: Init.Datatypes.bool) (x: a), + @Init.Logic.eq a (if b then x else x) x := + fun (a: Type) (b: Init.Datatypes.bool) (x: a) + => + SAWCoreScaffolding.iteDep (fun (b': Init.Datatypes.bool) + => + @Init.Logic.eq a (if b' then x else x) x + ) b (ite_true a x x) (ite_false a x x) + . + +Definition or_triv1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb x (Init.Datatypes.negb x)) Init.Datatypes.true := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.false + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb b (Init.Datatypes.negb b)) + Init.Datatypes.true + ) x (or_True1 (Init.Datatypes.negb Init.Datatypes.true)) + (trans Init.Datatypes.bool + (Init.Datatypes.orb Init.Datatypes.false var__0) var__0 + Init.Datatypes.true (or_False1 var__0) not_False) + . + +Definition or_triv2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb (Init.Datatypes.negb x) x) Init.Datatypes.true := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.false + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.orb (Init.Datatypes.negb b) b) + Init.Datatypes.true + ) x (or_True2 (Init.Datatypes.negb Init.Datatypes.true)) + (trans Init.Datatypes.bool + (Init.Datatypes.orb var__0 Init.Datatypes.false) var__0 + Init.Datatypes.true (or_False2 var__0) not_False) + . + +Definition and_triv1: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb x (Init.Datatypes.negb x)) + Init.Datatypes.false := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb b (Init.Datatypes.negb b)) + Init.Datatypes.false + ) x (trans Init.Datatypes.bool + (Init.Datatypes.andb Init.Datatypes.true var__0) var__0 + Init.Datatypes.false (and_True1 var__0) not_True) + (and_False1 (Init.Datatypes.negb Init.Datatypes.false)) + . + +Definition and_triv2: forall (x: Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb (Init.Datatypes.negb x) x) + Init.Datatypes.false := + fun (x: Init.Datatypes.bool) + => + let var__0 + := + Init.Datatypes.negb Init.Datatypes.true + in + SAWCoreScaffolding.iteDep (fun (b: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (Init.Datatypes.andb (Init.Datatypes.negb b) b) + Init.Datatypes.false + ) x (trans Init.Datatypes.bool + (Init.Datatypes.andb var__0 Init.Datatypes.true) var__0 + Init.Datatypes.false (and_True2 var__0) not_True) + (and_False2 (Init.Datatypes.negb Init.Datatypes.false)) + . + +Definition EqTrue: forall (_1: Init.Datatypes.bool), Prop := + fun (x: Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool x Init.Datatypes.true + . + +Definition TrueProp: Prop := + EqTrue Init.Datatypes.true. + +Definition TrueI: EqTrue Init.Datatypes.true := + @Init.Logic.eq_refl Init.Datatypes.bool Init.Datatypes.true. + +Definition andI: forall (x y: Init.Datatypes.bool) (_1: EqTrue x) (_2: + EqTrue y), + EqTrue (Init.Datatypes.andb x y) := + fun (x y: Init.Datatypes.bool) (p: EqTrue x) (q: EqTrue y) + => + trans4 Init.Datatypes.bool (Init.Datatypes.andb x y) + (Init.Datatypes.andb x Init.Datatypes.true) x Init.Datatypes.true + (eq_cong Init.Datatypes.bool y Init.Datatypes.true q + Init.Datatypes.bool (Init.Datatypes.andb x)) (and_True2 x) p + . + +Definition impliesI: forall (x y: Init.Datatypes.bool) (_1: forall (_1: + EqTrue x), + EqTrue y), + EqTrue (implies x y) := + fun (x y: Init.Datatypes.bool) + => + SAWCoreScaffolding.iteDep (fun (x1: Init.Datatypes.bool) + => + forall (_1: forall (_1: EqTrue x1), EqTrue y), + EqTrue (implies x1 y) + ) x (fun (H: forall (_1: EqTrue Init.Datatypes.true), EqTrue y) + => + trans Init.Datatypes.bool (implies Init.Datatypes.true y) y + Init.Datatypes.true (implies_True1 y) (H TrueI) + ) (fun (_1: forall (_1: EqTrue Init.Datatypes.false), EqTrue y) + => + implies_False1 y + ) + . + +(* "Prelude::Either" was skipped *) + +Definition Either__rec: forall (s t: Type) (p: forall (_1: + Init.Datatypes.sum s t), + Type) (_1: forall (l: s), p (@Init.Datatypes.inl s t l)) + (_2: forall (r: t), p (@Init.Datatypes.inr s t r)) (e: + Init.Datatypes.sum s t), + p e := + fun (s t: Type) (p: forall (_1: Init.Datatypes.sum s t), Type) (f1: forall + (l: s), + p (@Init.Datatypes.inl s t l)) (f2: forall (r: t), + p (@Init.Datatypes.inr s t r)) (e: Init.Datatypes.sum s t) + => + @Init.Datatypes.sum_rect s t p f1 f2 e + . + +Definition either: forall (a b c: Type) (_1: forall (_1: a), c) (_2: forall + (_2: b), + c) (_3: Init.Datatypes.sum a b), + c := + fun (a b c: Type) (f: forall (_1: a), c) (g: forall (_1: b), c) (e: + Init.Datatypes.sum a b) + => + Either__rec a b (fun (p: Init.Datatypes.sum a b) => c) f g e + . + +Definition left: forall (a b: Type) (_1: a), Init.Datatypes.sum a b := + fun (a b: Type) (x: a) + => + @Init.Datatypes.inl a b x + . + +Definition right: forall (a b: Type) (_1: b), Init.Datatypes.sum a b := + fun (a b: Type) (x: b) + => + @Init.Datatypes.inr a b x + . + +Definition eitherCong0: forall (t x y: Type) (_1: @Init.Logic.eq Type x y), + @Init.Logic.eq Type (Init.Datatypes.sum x t) (Init.Datatypes.sum y t) := + fun (t x y: Type) (eq: @Init.Logic.eq Type x y) + => + eq_cong Type x y eq Type (fun (y': Type) => Init.Datatypes.sum y' t) + . + +Definition eitherCong1: forall (t x y: Type) (_1: @Init.Logic.eq Type x y), + @Init.Logic.eq Type (Init.Datatypes.sum t x) (Init.Datatypes.sum t y) := + fun (t x y: Type) (eq: @Init.Logic.eq Type x y) + => + eq_cong Type x y eq Type (fun (y': Type) => Init.Datatypes.sum t y') + . + +Definition boolToEither: forall (_1: Init.Datatypes.bool), + Init.Datatypes.sum SAWCoreScaffolding.UnitType + SAWCoreScaffolding.UnitType := + fun (b: Init.Datatypes.bool) + => + if b then + @Init.Datatypes.inl SAWCoreScaffolding.UnitType + SAWCoreScaffolding.UnitType SAWCoreScaffolding.Unit + else + @Init.Datatypes.inr SAWCoreScaffolding.UnitType + SAWCoreScaffolding.UnitType SAWCoreScaffolding.Unit + . + +Inductive Maybe (a: Type) : Type := +| Nothing: Maybe a +| Just: forall (_1: a), Maybe a +. + +Definition Maybe__rec: forall (a: Type) (p: forall (_1: Maybe a), Type) (_1: + p (Nothing a)) (_2: forall (x: a), p (Just a x)) (m: Maybe a), + p m := + fun (a: Type) (p: forall (_1: Maybe a), Type) (f1: p (Nothing a)) (f2: forall + (x: a), + p (Just a x)) (m: Maybe a) + => + @SAWCorePrelude.Maybe_rect a p f1 f2 m + . + +Definition maybe: forall (a b: Type) (_1: b) (_2: forall (_2: a), b) (_3: + Maybe a), + b := + fun (a b: Type) (f1: b) (f2: forall (_1: a), b) (m: Maybe a) + => + Maybe__rec a (fun (m': Maybe a) => b) f1 f2 m + . + +(* "Prelude::Pos" was skipped *) + +(* "Prelude::Pos_cases@core" was skipped *) + +(* "Prelude::posInc@core" was skipped *) + +(* "Prelude::posAdd@core" was skipped *) + +(* "Prelude::posMul@core" was skipped *) + +(* "Prelude::posExp@core" was skipped *) + +Definition posEq: forall (_1 _2: Stdlib.PArith.BinPos.positive), + Init.Datatypes.bool := + SAWCoreScaffolding.Pos_cases (forall (_1: Stdlib.PArith.BinPos.positive), + Init.Datatypes.bool) + (SAWCoreScaffolding.Pos_cases Init.Datatypes.bool Init.Datatypes.true (fun + (y: Stdlib.PArith.BinPos.positive) (_1: Init.Datatypes.bool) + => + Init.Datatypes.false + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: Init.Datatypes.bool) + => + Init.Datatypes.false + )) (fun (x: Stdlib.PArith.BinPos.positive) (rx: forall + (_1: Stdlib.PArith.BinPos.positive), + Init.Datatypes.bool) + => + SAWCoreScaffolding.Pos_cases Init.Datatypes.bool Init.Datatypes.false + (fun (y: Stdlib.PArith.BinPos.positive) (_1: Init.Datatypes.bool) + => + rx y + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: Init.Datatypes.bool) + => + Init.Datatypes.false + ) + ) (fun (x: Stdlib.PArith.BinPos.positive) (rx: forall + (_1: Stdlib.PArith.BinPos.positive), + Init.Datatypes.bool) + => + SAWCoreScaffolding.Pos_cases Init.Datatypes.bool Init.Datatypes.false + (fun (y: Stdlib.PArith.BinPos.positive) (_1: Init.Datatypes.bool) + => + Init.Datatypes.false + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: Init.Datatypes.bool) + => + rx y + ) + ). + +Definition posCmp: forall (_1 _2: Stdlib.PArith.BinPos.positive) + (_3: Init.Datatypes.bool), + Init.Datatypes.bool := + SAWCoreScaffolding.Pos_cases (forall (_1: Stdlib.PArith.BinPos.positive) + (_2: Init.Datatypes.bool), + Init.Datatypes.bool) + (SAWCoreScaffolding.Pos_cases (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (fun (k: Init.Datatypes.bool) => k) (fun + (y: Stdlib.PArith.BinPos.positive) (_1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (k: Init.Datatypes.bool) + => + Init.Datatypes.true + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (k: Init.Datatypes.bool) + => + Init.Datatypes.true + )) (fun (x: Stdlib.PArith.BinPos.positive) (rx: forall + (_1: Stdlib.PArith.BinPos.positive) + (_2: Init.Datatypes.bool), + Init.Datatypes.bool) + => + SAWCoreScaffolding.Pos_cases (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (fun (k: Init.Datatypes.bool) + => + Init.Datatypes.false + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (k: Init.Datatypes.bool) + => + rx y k + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (k: Init.Datatypes.bool) + => + rx y Init.Datatypes.true + ) + ) (fun (x: Stdlib.PArith.BinPos.positive) (rx: forall + (_1: Stdlib.PArith.BinPos.positive) + (_2: Init.Datatypes.bool), + Init.Datatypes.bool) + => + SAWCoreScaffolding.Pos_cases (forall (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (fun (k: Init.Datatypes.bool) + => + Init.Datatypes.false + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (k: Init.Datatypes.bool) + => + rx y Init.Datatypes.false + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: forall + (_1: Init.Datatypes.bool), + Init.Datatypes.bool) (k: Init.Datatypes.bool) + => + rx y k + ) + ). + +Definition posLe: forall (_1 _2: Stdlib.PArith.BinPos.positive), + Init.Datatypes.bool := + fun (x y: Stdlib.PArith.BinPos.positive) + => + posCmp x y Init.Datatypes.true + . + +Definition posLt: forall (_1 _2: Stdlib.PArith.BinPos.positive), + Init.Datatypes.bool := + fun (x y: Stdlib.PArith.BinPos.positive) + => + posCmp x y Init.Datatypes.false + . + +(* "Prelude::Nat" was skipped *) + +(* "Prelude::Succ@core" was skipped *) + +(* "Prelude::addNat@core" was skipped *) + +(* "Prelude::mulNat@core" was skipped *) + +(* "Prelude::expNat@core" was skipped *) + +(* "Prelude::equalNat@core" was skipped *) + +(* "Prelude::ltNat@core" was skipped *) + +(* "Prelude::leNat@core" was skipped *) + +(* "Prelude::minNat@core" was skipped *) + +(* "Prelude::maxNat@core" was skipped *) + +(* "Prelude::widthNat@core" was skipped *) + +(* "Prelude::Z" was skipped *) + +Definition Z_cases: forall (a: Type) (_1: a) (_2: forall + (_2: Stdlib.PArith.BinPos.positive), + a) (_3: forall (_3: Stdlib.PArith.BinPos.positive), a) + (_4: Stdlib.ZArith.BinInt.Z), + a := + fun (a: Type) + => + @Stdlib.ZArith.BinInt.Z_rect (fun (_1: Stdlib.ZArith.BinInt.Z) => a) + . + +(* "Prelude::BitM@core" was skipped *) + +Definition dblZ: forall (_1: Stdlib.ZArith.BinInt.Z), Stdlib.ZArith.BinInt.Z := + Z_cases Stdlib.ZArith.BinInt.Z Stdlib.ZArith.BinInt.Z0 (fun + (x: Stdlib.PArith.BinPos.positive) + => + Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.xO x) + ) (fun (x: Stdlib.PArith.BinPos.positive) + => + Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.xO x) + ). + +Definition dblZinc: forall (_1: Stdlib.ZArith.BinInt.Z), + Stdlib.ZArith.BinInt.Z := + Z_cases Stdlib.ZArith.BinInt.Z + (Stdlib.ZArith.BinInt.Zpos Stdlib.PArith.BinPos.xH) (fun + (x: Stdlib.PArith.BinPos.positive) + => + Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.xI x) + ) (fun (x: Stdlib.PArith.BinPos.positive) + => + Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.Pos.pred_double x) + ). + +Definition dblZdec: forall (_1: Stdlib.ZArith.BinInt.Z), + Stdlib.ZArith.BinInt.Z := + Z_cases Stdlib.ZArith.BinInt.Z + (Stdlib.ZArith.BinInt.Zneg Stdlib.PArith.BinPos.xH) (fun + (x: Stdlib.PArith.BinPos.positive) + => + Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.Pos.pred_double x) + ) (fun (x: Stdlib.PArith.BinPos.positive) + => + Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.xI x) + ). + +Definition posSub: forall (_1 _2: Stdlib.PArith.BinPos.positive), + Stdlib.ZArith.BinInt.Z := + SAWCoreScaffolding.Pos_cases (forall (_1: Stdlib.PArith.BinPos.positive), + Stdlib.ZArith.BinInt.Z) + (SAWCoreScaffolding.Pos_cases Stdlib.ZArith.BinInt.Z + Stdlib.ZArith.BinInt.Z0 (fun (y: Stdlib.PArith.BinPos.positive) + (_1: Stdlib.ZArith.BinInt.Z) + => + Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.Pos.pred_double y) + ) (fun (y: Stdlib.PArith.BinPos.positive) (_1: Stdlib.ZArith.BinInt.Z) + => + Stdlib.ZArith.BinInt.Zneg (Stdlib.PArith.BinPos.xO y) + )) (fun (x: Stdlib.PArith.BinPos.positive) (rx: forall + (_1: Stdlib.PArith.BinPos.positive), + Stdlib.ZArith.BinInt.Z) + => + SAWCoreScaffolding.Pos_cases Stdlib.ZArith.BinInt.Z + (Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.Pos.pred_double x)) + (fun (y: Stdlib.PArith.BinPos.positive) (_1: Stdlib.ZArith.BinInt.Z) + => + dblZ (rx y) + ) (fun (y: Stdlib.PArith.BinPos.positive) + (_1: Stdlib.ZArith.BinInt.Z) + => + dblZdec (rx y) + ) + ) (fun (x: Stdlib.PArith.BinPos.positive) (rx: forall + (_1: Stdlib.PArith.BinPos.positive), + Stdlib.ZArith.BinInt.Z) + => + SAWCoreScaffolding.Pos_cases Stdlib.ZArith.BinInt.Z + (Stdlib.ZArith.BinInt.Zpos (Stdlib.PArith.BinPos.xO x)) (fun + (y: Stdlib.PArith.BinPos.positive) (_1: Stdlib.ZArith.BinInt.Z) + => + dblZinc (rx y) + ) (fun (y: Stdlib.PArith.BinPos.positive) + (_1: Stdlib.ZArith.BinInt.Z) + => + dblZ (rx y) + ) + ). + +(* "Prelude::subNZ@core" was skipped *) + +Definition ZtoNat: forall (_1: Stdlib.ZArith.BinInt.Z), Init.Datatypes.nat := + Z_cases Init.Datatypes.nat SAWCoreScaffolding.Zero + Stdlib.PArith.BinPos.Pos.to_nat (fun (_1: Stdlib.PArith.BinPos.positive) + => + SAWCoreScaffolding.Zero + ). + +(* "Prelude::subNat@core" was skipped *) + +(* "Prelude::doubleNat@core" was skipped *) + +(* "Prelude::posDivMod@core" was skipped *) + +(* "Prelude::divModNat@core" was skipped *) + +Definition divNat: forall (_1 _2: Init.Datatypes.nat), Init.Datatypes.nat := + fun (x y: Init.Datatypes.nat) + => + Pair_fst Init.Datatypes.nat + (SAWCoreScaffolding.PairType Init.Datatypes.nat + SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.divModNat x y) + . + +Definition modNat: forall (_1 _2: Init.Datatypes.nat), Init.Datatypes.nat := + fun (x y: Init.Datatypes.nat) + => + Pair_fst Init.Datatypes.nat SAWCoreScaffolding.UnitType + (Pair_snd Init.Datatypes.nat + (SAWCoreScaffolding.PairType Init.Datatypes.nat + SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.divModNat x y)) + . + +(* "Prelude::AccessiblePos" was skipped *) + +(* "Prelude::AccessiblePos_Bit0@core" was skipped *) + +(* "Prelude::AccessiblePos_Bit1@core" was skipped *) + +(* "Prelude::AccessiblePos_all@core" was skipped *) + +(* "Prelude::AccessibleNat" was skipped *) + +(* "Prelude::AccessibleNat_NatPos@core" was skipped *) + +(* "Prelude::AccessibleNat_all@core" was skipped *) + +(* "Prelude::Nat__rec@core" was skipped *) + +Definition Nat_cases: forall (a: Type) (_1: a) (_2: forall + (_2: Init.Datatypes.nat) (_3: a), + a) (_3: Init.Datatypes.nat), + a := + fun (a: Type) (f1: a) (f2: forall (_1: Init.Datatypes.nat) (_2: a), a) + (n: Init.Datatypes.nat) + => + SAWCoreScaffolding.Nat__rec (fun (n1: Init.Datatypes.nat) => a) f1 f2 n + . + +Definition Nat_cases2: forall (a: Type) (_1: forall (_1: Init.Datatypes.nat), a) + (_2: forall (_2: Init.Datatypes.nat), a) (_3: forall + (_3 _4: Init.Datatypes.nat) (_5: a), + a) (_4 _5: Init.Datatypes.nat), + a := + fun (a: Type) (f1: forall (_1: Init.Datatypes.nat), a) (f2: forall + (_1: Init.Datatypes.nat), + a) (f3: forall (_1 _2: Init.Datatypes.nat) (_3: a), a) + (n m: Init.Datatypes.nat) + => + SAWCoreScaffolding.Nat__rec (fun (n1: Init.Datatypes.nat) + => + forall (_1: Init.Datatypes.nat), + a + ) f1 (fun (n1: Init.Datatypes.nat) (f_rec: forall + (_1: Init.Datatypes.nat), + a) (m1: Init.Datatypes.nat) + => + SAWCoreScaffolding.Nat__rec (fun (m': Init.Datatypes.nat) => a) + (f2 n1) (fun (m': Init.Datatypes.nat) (frec': a) + => + f3 n1 m' (f_rec m') + ) m1 + ) n m + . + +Definition eqNat: forall (_1 _2: Init.Datatypes.nat), Prop := + fun (x y: Init.Datatypes.nat) + => + @Init.Logic.eq Init.Datatypes.nat x y + . + +Definition eqNatSucc: forall (x y: Init.Datatypes.nat) (_1: eqNat x y), + eqNat (SAWCoreScaffolding.Succ x) (SAWCoreScaffolding.Succ y) := + fun (x y: Init.Datatypes.nat) (eq: eqNat x y) + => + eq_cong Init.Datatypes.nat x y eq Init.Datatypes.nat (fun + (n: Init.Datatypes.nat) + => + SAWCoreScaffolding.Succ n + ) + . + +Definition pred: forall (_1: Init.Datatypes.nat), Init.Datatypes.nat := + fun (x: Init.Datatypes.nat) + => + Nat_cases Init.Datatypes.nat SAWCoreScaffolding.Zero (fun + (n m: Init.Datatypes.nat) + => + n + ) x + . + +(* "Prelude::eqNatPrec@core" was skipped *) + +(* "Prelude::IsLeNat" was skipped *) + +(* "Prelude::IsLtNat@core" was skipped *) + +(* "Prelude::IsLeNat__rec@core" was skipped *) + +Axiom natCompareLe: forall (m n: Init.Datatypes.nat), + Init.Datatypes.sum (SAWCoreScaffolding.IsLtNat m n) + (SAWCoreScaffolding.IsLeNat n m). + +Definition proveEqNat: forall (m n: Init.Datatypes.nat), + Maybe (@Init.Logic.eq Init.Datatypes.nat m n) := + SAWCoreScaffolding.Nat__rec (fun (m: Init.Datatypes.nat) + => + forall (n: Init.Datatypes.nat), + Maybe (@Init.Logic.eq Init.Datatypes.nat m n) + ) (SAWCoreScaffolding.Nat__rec (fun (n: Init.Datatypes.nat) + => + Maybe (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero n) + ) (Just (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero + SAWCoreScaffolding.Zero) + (@Init.Logic.eq_refl Init.Datatypes.nat SAWCoreScaffolding.Zero)) + (fun (n: Init.Datatypes.nat) (_1: + Maybe (@Init.Logic.eq Init.Datatypes.nat + SAWCoreScaffolding.Zero n)) + => + Nothing (@Init.Logic.eq Init.Datatypes.nat SAWCoreScaffolding.Zero + (SAWCoreScaffolding.Succ n)) + )) (fun (m: Init.Datatypes.nat) (rec: forall (n: Init.Datatypes.nat), + Maybe (@Init.Logic.eq Init.Datatypes.nat m n)) + => + SAWCoreScaffolding.Nat__rec (fun (n: Init.Datatypes.nat) + => + Maybe (@Init.Logic.eq Init.Datatypes.nat + (SAWCoreScaffolding.Succ m) n) + ) (Nothing + (@Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.Succ m) + SAWCoreScaffolding.Zero)) (fun (n: Init.Datatypes.nat) (_1: + Maybe (@Init.Logic.eq Init.Datatypes.nat + (SAWCoreScaffolding.Succ m) n)) + => + let var__0 + := + @Init.Logic.eq Init.Datatypes.nat m n + in + let var__1 + := + @Init.Logic.eq Init.Datatypes.nat (SAWCoreScaffolding.Succ m) + (SAWCoreScaffolding.Succ n) + in + maybe var__0 (Maybe var__1) (Nothing var__1) (fun (e: var__0) + => + Just var__1 (eqNatSucc m n e) + ) (rec n) + ) + ). + +Axiom proveLeNat: forall (x y: Init.Datatypes.nat), + Maybe (SAWCoreScaffolding.IsLeNat x y). + +Definition proveLtNat: forall (x y: Init.Datatypes.nat), + Maybe (SAWCoreScaffolding.IsLtNat x y) := + fun (x y: Init.Datatypes.nat) + => + proveLeNat (SAWCoreScaffolding.Succ x) y + . + +(* "Prelude::eqNatAdd0@core" was skipped *) + +(* "Prelude::eqNatAddS@core" was skipped *) + +(* "Prelude::eqNatAddComm@core" was skipped *) + +(* "Prelude::addNat_assoc@core" was skipped *) + +Definition equal0Nat: forall (_1: Init.Datatypes.nat), Init.Datatypes.bool := + SAWCoreScaffolding.equalNat SAWCoreScaffolding.Zero. + +Axiom equalNatToEqNat: forall (m n: Init.Datatypes.nat) (_1: + @Init.Logic.eq Init.Datatypes.bool (SAWCoreScaffolding.equalNat m n) + Init.Datatypes.true), + eqNat m n. + +Definition ifEqNatWithProof: forall (a: Type) (m n: Init.Datatypes.nat) (_1: a) + (_2: forall (_2: eqNat m n), a), + a := + fun (a: Type) (m n: Init.Datatypes.nat) (x: a) (f: forall (_1: eqNat m n), a) + => + let var__0 + := + SAWCoreScaffolding.equalNat m n + in + ifWithProof a var__0 x (fun (pf: + @Init.Logic.eq Init.Datatypes.bool var__0 Init.Datatypes.true) + => + f (equalNatToEqNat m n pf) + ) + . + +Definition natCase: forall (p: forall (_1: Init.Datatypes.nat), Type) (_1: + p SAWCoreScaffolding.Zero) (_2: forall (n: Init.Datatypes.nat), + p (SAWCoreScaffolding.Succ n)) (n: Init.Datatypes.nat), + p n := + fun (p: forall (_1: Init.Datatypes.nat), Type) (z: p SAWCoreScaffolding.Zero) + (s: forall (n: Init.Datatypes.nat), p (SAWCoreScaffolding.Succ n)) + => + SAWCoreScaffolding.Nat__rec p z (fun (n: Init.Datatypes.nat) (r: p n) + => + s n + ) + . + +(* "Prelude::if0Nat@core" was skipped *) + +Axiom expByNat: forall (a: Type) (_1: a) (_2: forall (_2 _3: a), a) (_3: a) + (_4: Init.Datatypes.nat), + a. + +Definition IsLeNat_transitive: forall (n m o: Init.Datatypes.nat) (_1: + SAWCoreScaffolding.IsLeNat n m) (_2: SAWCoreScaffolding.IsLeNat m o), + SAWCoreScaffolding.IsLeNat n o := + fun (n m o: Init.Datatypes.nat) (Hnm: SAWCoreScaffolding.IsLeNat n m) (Hmo: + SAWCoreScaffolding.IsLeNat m o) + => + SAWCoreScaffolding.IsLeNat__rec m (fun (x: Init.Datatypes.nat) (H: + SAWCoreScaffolding.IsLeNat m x) + => + SAWCoreScaffolding.IsLeNat n x + ) Hnm (fun (x: Init.Datatypes.nat) (H1: SAWCoreScaffolding.IsLeNat m x) + (H2: SAWCoreScaffolding.IsLeNat n x) + => + SAWCoreScaffolding.IsLeNat_succ n x H2 + ) o Hmo + . + +(* "Prelude::IsLtNat_Zero_absurd@core" was skipped *) + +(* "Prelude::IsLeNat_SuccSucc@core" was skipped *) + +Definition Nat_complete_induction: forall (p: forall (_1: Init.Datatypes.nat), + Prop) (_1: forall (n: Init.Datatypes.nat) (_1: forall + (m: Init.Datatypes.nat) (_1: + SAWCoreScaffolding.IsLtNat m n), + p m), + p n) (n: Init.Datatypes.nat), + p n := + fun (p: forall (_1: Init.Datatypes.nat), Prop) (f: forall + (n: Init.Datatypes.nat) (_1: forall (m: Init.Datatypes.nat) + (_1: SAWCoreScaffolding.IsLtNat m n), + p m), + p n) (n: Init.Datatypes.nat) + => + SAWCoreScaffolding.Nat__rec (fun (n1: Init.Datatypes.nat) + => + forall (m: Init.Datatypes.nat) (_1: + SAWCoreScaffolding.IsLeNat m n1), + p m + ) (fun (n1: Init.Datatypes.nat) (Hn: + SAWCoreScaffolding.IsLeNat n1 SAWCoreScaffolding.Zero) + => + f n1 (fun (m: Init.Datatypes.nat) (Hm: + SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.Succ m) n1) + => + SAWCoreScaffolding.IsLtNat_Zero_absurd (p m) m + (IsLeNat_transitive (SAWCoreScaffolding.Succ m) n1 + SAWCoreScaffolding.Zero Hm Hn) + ) + ) (fun (n1: Init.Datatypes.nat) (Hind: forall (m: Init.Datatypes.nat) + (_1: SAWCoreScaffolding.IsLeNat m n1), + p m) (r: Init.Datatypes.nat) (Hr: + SAWCoreScaffolding.IsLeNat r (SAWCoreScaffolding.Succ n1)) + => + f r (fun (m: Init.Datatypes.nat) (Hm: + SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.Succ m) r) + => + Hind m (SAWCoreScaffolding.IsLeNat_SuccSucc m n1 + (IsLeNat_transitive (SAWCoreScaffolding.Succ m) r + (SAWCoreScaffolding.Succ n1) Hm Hr)) + ) + ) n n (SAWCoreScaffolding.IsLeNat_base n) + . + +(* "Prelude::Vec@core" was skipped *) + +(* "Prelude::gen@core" was skipped *) + +(* "Prelude::head@core" was skipped *) + +(* "Prelude::tail@core" was skipped *) + +(* "Prelude::head_gen@core" was skipped *) + +(* "Prelude::tail_gen@core" was skipped *) + +Definition atWithDefault': forall (n: Init.Datatypes.nat) (a: Type) (_1: a) + (_2: SAWCoreVectorsAsRocqVectors.Vec n a) (_3: Init.Datatypes.nat), + a := + fun (n: Init.Datatypes.nat) (a: Type) (d: a) + => + SAWCoreScaffolding.Nat__rec (fun (n1: Init.Datatypes.nat) + => + forall (_1: SAWCoreVectorsAsRocqVectors.Vec n1 a) + (_2: Init.Datatypes.nat), + a + ) (fun (_1: SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero a) + (_2: Init.Datatypes.nat) + => + d + ) (fun (n1: Init.Datatypes.nat) (rec_f: forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n1 a) + (_2: Init.Datatypes.nat), + a) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n1) a) + (i: Init.Datatypes.nat) + => + Nat_cases a (SAWCoreVectorsAsRocqVectors.head n1 a v) (fun + (i_prev: Init.Datatypes.nat) (_1: a) + => + rec_f (SAWCoreVectorsAsRocqVectors.tail n1 a v) i_prev + ) i + ) n + . + +(* "Prelude::atWithDefault@core" was skipped *) + +Definition sawAt: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: Init.Datatypes.nat), + a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (v: SAWCoreVectorsAsRocqVectors.Vec n a) (i: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.atWithDefault n a + (SAWCoreScaffolding.error a "at: index out of bounds"%string) v i + . + +(* "Prelude::EmptyVec@core" was skipped *) + +Definition ConsVec: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (_1: a) (n: Init.Datatypes.nat) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (x: a) + (n: Init.Datatypes.nat) (v: SAWCoreVectorsAsRocqVectors.Vec n a) + => + SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.Succ n) a + (Nat_cases a x (fun (i: Init.Datatypes.nat) (a': a) + => + SAWCorePrelude.sawAt n a v i + )) + . + +Definition upd: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: Init.Datatypes.nat) + (_3: a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (v: SAWCoreVectorsAsRocqVectors.Vec n a) (j: Init.Datatypes.nat) (x: a) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (i: Init.Datatypes.nat) + => + if SAWCoreScaffolding.equalNat i j then + x + else + SAWCorePrelude.sawAt n a v i + ) + . + +Definition map: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) (_1: forall (_1: a), b) (n: Init.Datatypes.nat) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n b := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (f: forall + (_1: a), + b) (n: Init.Datatypes.nat) (v: + SAWCoreVectorsAsRocqVectors.Vec n a) + => + SAWCoreVectorsAsRocqVectors.gen n b (fun (i: Init.Datatypes.nat) + => + f (SAWCorePrelude.sawAt n a v i) + ) + . + +Definition zipWith: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) {Inh_b: SAWCoreScaffolding.Inhabited b} (c: Type) (_1: forall + (_1: a) (_2: b), + c) (n: Init.Datatypes.nat) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a) (_3: + SAWCoreVectorsAsRocqVectors.Vec n b), + SAWCoreVectorsAsRocqVectors.Vec n c := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (b: Type) (Inh_b: + SAWCoreScaffolding.Inhabited b) (c: Type) (f: forall (_1: a) (_2: b), + c) (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n a) (y: + SAWCoreVectorsAsRocqVectors.Vec n b) + => + SAWCoreVectorsAsRocqVectors.gen n c (fun (i: Init.Datatypes.nat) + => + f (SAWCorePrelude.sawAt n a x i) (SAWCorePrelude.sawAt n b y i) + ) + . + +Definition replicate: forall (n: Init.Datatypes.nat) (a: Type) (_1: a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (x: a) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (_1: Init.Datatypes.nat) => x) + . + +Definition single: forall (a: Type) (_1: a), + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) a := + replicate (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH). + +(* "Prelude::at_single@core" was skipped *) + + +Fixpoint zip (a b : sort 0) (m n : nat) (xs : Vec m a) (ys : Vec n b) + : Vec (minNat m n) (a * (b * unit)) := + match + xs in Vector.t _ m' + return Vector.t _ (minNat m' n) + with + | Vector.nil => Vector.nil _ + | Vector.cons x pm xs => + match + ys in Vector.t _ n' + return Vector.t _ (minNat (S pm) n') + with + | Vector.nil => Vector.nil _ + | Vector.cons y pm' ys => Vector.cons _ (x, (y, tt)) _ (zip _ _ _ _ xs ys) + end + end +. + +(* "Prelude::foldr@core" was skipped *) + +(* "Prelude::foldl@core" was skipped *) + +(* "Prelude::scanl@core" was skipped *) + +(* "Prelude::foldr_nil@core" was skipped *) + +(* "Prelude::foldr_cons@core" was skipped *) + +(* "Prelude::foldl_nil@core" was skipped *) + +(* "Prelude::foldl_cons@core" was skipped *) + +Definition reverse: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (xs: SAWCoreVectorsAsRocqVectors.Vec n a) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (i: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt n a xs + (SAWCoreScaffolding.subNat + (SAWCoreScaffolding.subNat n + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + i) + ) + . + +Definition transpose: forall (m n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a)), + SAWCoreVectorsAsRocqVectors.Vec n + (SAWCoreVectorsAsRocqVectors.Vec m a) := + fun (m n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (xss: + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a)) + => + SAWCoreVectorsAsRocqVectors.gen n (SAWCoreVectorsAsRocqVectors.Vec m a) + (fun (j: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.gen m a (fun (i: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt n a + (SAWCorePrelude.sawAt m + (SAWCoreVectorsAsRocqVectors.Vec n a) xss i) j + ) + ) + . + +Definition vecEq: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: forall (_1 _2: a), + Init.Datatypes.bool) (_2 _3: + SAWCoreVectorsAsRocqVectors.Vec n a), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (eqFn: forall (_1 _2: a), Init.Datatypes.bool) (x y: + SAWCoreVectorsAsRocqVectors.Vec n a) + => + SAWCoreVectorsAsRocqVectors.foldr Init.Datatypes.bool Init.Datatypes.bool + n Init.Datatypes.andb Init.Datatypes.true + (zipWith a a Init.Datatypes.bool eqFn n x y) + . + +Axiom vecEq_refl: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (eqFn: forall (_1 _2: a), + Init.Datatypes.bool) (_1: forall (x: a), + @Init.Logic.eq Init.Datatypes.bool (eqFn x x) + Init.Datatypes.true) (x: + SAWCoreVectorsAsRocqVectors.Vec n a), + @Init.Logic.eq Init.Datatypes.bool (vecEq n a eqFn x x) + Init.Datatypes.true. + +Definition take: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a), + SAWCoreVectorsAsRocqVectors.Vec m a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (m n: Init.Datatypes.nat) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a) + => + SAWCoreVectorsAsRocqVectors.gen m a (fun (i: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt (SAWCoreScaffolding.addNat m n) a v i + ) + . + +Definition vecCong: forall (a: Type) (m n: Init.Datatypes.nat) (_1: + @Init.Logic.eq Init.Datatypes.nat m n), + @Init.Logic.eq Type (SAWCoreVectorsAsRocqVectors.Vec m a) + (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (a: Type) (m n: Init.Datatypes.nat) (eq: + @Init.Logic.eq Init.Datatypes.nat m n) + => + eq_cong Init.Datatypes.nat m n eq Type (fun (i: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.Vec i a + ) + . + +(* "Prelude::coerceVec@core" was skipped *) + +(* "Prelude::take0@core" was skipped *) + +Definition drop: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (m n: Init.Datatypes.nat) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (i: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt (SAWCoreScaffolding.addNat m n) a v + (SAWCoreScaffolding.addNat m i) + ) + . + +(* "Prelude::drop0@core" was skipped *) + +Definition slice: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (m n o: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat (SAWCoreScaffolding.addNat m n) o) a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (m n o: Init.Datatypes.nat) (v: + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat (SAWCoreScaffolding.addNat m n) o) a) + => + drop a m n (take a (SAWCoreScaffolding.addNat m n) o v) + . + +Definition join: forall (m n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a)), + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a := + fun (m n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (v: + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a)) + => + SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.mulNat m n) a (fun + (i: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt n a + (SAWCorePrelude.sawAt m (SAWCoreVectorsAsRocqVectors.Vec n a) v + (divNat i n)) (modNat i n) + ) + . + +Definition split: forall (m n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a), + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (m n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a) + => + SAWCoreVectorsAsRocqVectors.gen m (SAWCoreVectorsAsRocqVectors.Vec n a) + (fun (i: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (j: Init.Datatypes.nat) + => + SAWCorePrelude.sawAt (SAWCoreScaffolding.mulNat m n) a v + (SAWCoreScaffolding.addNat (SAWCoreScaffolding.mulNat i n) + j) + ) + ) + . + +Definition append: forall (m n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec m a) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) a := + fun (m n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (x: + SAWCoreVectorsAsRocqVectors.Vec m a) (y: + SAWCoreVectorsAsRocqVectors.Vec n a) + => + SAWCoreVectorsAsRocqVectors.gen (SAWCoreScaffolding.addNat m n) a (fun + (i: Init.Datatypes.nat) + => + if SAWCoreScaffolding.ltNat i m then + SAWCorePrelude.sawAt m a x i + else + SAWCorePrelude.sawAt n a y (SAWCoreScaffolding.subNat i m) + ) + . + +(* "Prelude::rotateL@core" was skipped *) + +(* "Prelude::rotateR@core" was skipped *) + +(* "Prelude::shiftL@core" was skipped *) + +(* "Prelude::shiftR@core" was skipped *) + +Definition joinLittleEndian: forall (m n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a)), + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a := + fun (m n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (v: + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a)) + => + join m n a (reverse m (SAWCoreVectorsAsRocqVectors.Vec n a) v) + . + +Definition splitLittleEndian: forall (m n: Init.Datatypes.nat) (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a), + SAWCoreVectorsAsRocqVectors.Vec m + (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (m n: Init.Datatypes.nat) (a: Type) (Inh_a: + SAWCoreScaffolding.Inhabited a) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.mulNat m n) a) + => + reverse m (SAWCoreVectorsAsRocqVectors.Vec n a) (split m n a v) + . + +Definition pmux: forall (n: Init.Datatypes.nat) (a: Type) (_1: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a) (_3: a), + a := + fun (n: Init.Datatypes.nat) (a: Type) (conds: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (xs: + SAWCoreVectorsAsRocqVectors.Vec n a) (default: a) + => + SAWCoreVectorsAsRocqVectors.foldr (forall (_1: a), a) a n + (SAWCoreScaffolding.id (forall (_1: a), a)) default + (zipWith Init.Datatypes.bool a (forall (_1: a), a) + (SAWCoreScaffolding.ite a) n conds xs) + . + +(* "Prelude::appendString@core" was skipped *) + +Axiom bytesToString: forall (n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n + (SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + Init.Datatypes.bool)), + Stdlib.Strings.String.string. + +(* "Prelude::equalString@core" was skipped *) + +Definition msb: forall (n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + SAWCorePrelude.sawAt (SAWCoreScaffolding.Succ n) Init.Datatypes.bool v + SAWCoreScaffolding.Zero + . + +Definition lsb: forall (n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (v: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + SAWCorePrelude.sawAt (SAWCoreScaffolding.Succ n) Init.Datatypes.bool v n + . + +(* "Prelude::bvNat@core" was skipped *) + +(* "Prelude::bvToNat@core" was skipped *) + +Axiom bvNat_bvToNat: forall (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreVectorsAsRocqVectors.bvNat n + (SAWCoreVectorsAsRocqVectors.bvToNat n x)) x. + +Definition bvAt: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (xs: SAWCoreVectorsAsRocqVectors.Vec n a) (i: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + SAWCorePrelude.sawAt n a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i) + . + +Definition bvUpd: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (_3: a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (xs: SAWCoreVectorsAsRocqVectors.Vec n a) (i: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (y: a) + => + upd n a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i) y + . + +Definition bvRotateL: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (xs: SAWCoreVectorsAsRocqVectors.Vec n a) (i: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.rotateL n a xs + (SAWCoreVectorsAsRocqVectors.bvToNat w i) + . + +Definition bvRotateR: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (xs: SAWCoreVectorsAsRocqVectors.Vec n a) (i: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.rotateR n a xs + (SAWCoreVectorsAsRocqVectors.bvToNat w i) + . + +Definition bvShiftL: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: a) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a) (_3: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (z: a) (xs: SAWCoreVectorsAsRocqVectors.Vec n a) + (i: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.shiftL n a z xs + (SAWCoreVectorsAsRocqVectors.bvToNat w i) + . + +Definition bvShiftR: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: a) (_2: + SAWCoreVectorsAsRocqVectors.Vec n a) (_3: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (z: a) (xs: SAWCoreVectorsAsRocqVectors.Vec n a) + (i: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.shiftR n a z xs + (SAWCoreVectorsAsRocqVectors.bvToNat w i) + . + +Definition bvSShiftR: forall (n: Init.Datatypes.nat) (a: Type) {Inh_a: + SAWCoreScaffolding.Inhabited a} (w: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a) (_2: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a := + fun (n: Init.Datatypes.nat) (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) + (w: Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) a) (i: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + let var__0 + := + SAWCoreScaffolding.Succ n + in + bvShiftR var__0 a w + (SAWCorePrelude.sawAt var__0 a xs SAWCoreScaffolding.Zero) xs i + . + +(* "Prelude::bvAdd@core" was skipped *) + +(* "Prelude::bvugt@core" was skipped *) + +(* "Prelude::bvuge@core" was skipped *) + +(* "Prelude::bvult@core" was skipped *) + +(* "Prelude::bvule@core" was skipped *) + +(* "Prelude::bvsgt@core" was skipped *) + +(* "Prelude::bvsge@core" was skipped *) + +(* "Prelude::bvslt@core" was skipped *) + +(* "Prelude::bvsle@core" was skipped *) + +(* "Prelude::bvPopcount@core" was skipped *) + +(* "Prelude::bvCountLeadingZeros@core" was skipped *) + +(* "Prelude::bvCountTrailingZeros@core" was skipped *) + +(* "Prelude::bvForall@core" was skipped *) + +Definition bvCarry: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + SAWCoreVectorsAsRocqVectors.bvult n + (SAWCoreVectorsAsRocqVectors.bvAdd n x y) x + . + +Definition bvSCarry: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + let var__0 + := + msb n x + in + Init.Datatypes.andb (SAWCoreScaffolding.boolEqb var__0 (msb n y)) + (Init.Datatypes.xorb var__0 + (msb n (SAWCoreVectorsAsRocqVectors.bvAdd + (SAWCoreScaffolding.Succ n) x y))) + . + +Definition bvAddWithCarry: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreScaffolding.PairType Init.Datatypes.bool + (SAWCoreScaffolding.PairType + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.UnitType) := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + SAWCoreScaffolding.PairValue Init.Datatypes.bool + (SAWCoreScaffolding.PairType + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.UnitType) (bvCarry n x y) + (SAWCoreScaffolding.PairValue + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + SAWCoreScaffolding.UnitType + (SAWCoreVectorsAsRocqVectors.bvAdd n x y) SAWCoreScaffolding.Unit) + . + +(* "Prelude::bvAddZeroL@core" was skipped *) + +(* "Prelude::bvAddZeroR@core" was skipped *) + +(* "Prelude::bvNeg@core" was skipped *) + +(* "Prelude::bvSub@core" was skipped *) + +Definition bvSBorrow: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + let var__0 + := + msb n x + in + Init.Datatypes.andb (Init.Datatypes.xorb var__0 (msb n y)) + (Init.Datatypes.xorb var__0 + (msb n (SAWCoreVectorsAsRocqVectors.bvSub + (SAWCoreScaffolding.Succ n) x y))) + . + +(* "Prelude::bvMul@core" was skipped *) + +(* "Prelude::bvLg2@core" was skipped *) + +(* "Prelude::bvUDiv@core" was skipped *) + +(* "Prelude::bvURem@core" was skipped *) + +(* "Prelude::bvSDiv@core" was skipped *) + +(* "Prelude::bvSRem@core" was skipped *) + +(* "Prelude::bvShl@core" was skipped *) + +(* "Prelude::bvShr@core" was skipped *) + +(* "Prelude::bvSShr@core" was skipped *) + +(* "Prelude::bvShiftL_bvShl@core" was skipped *) + +(* "Prelude::bvShiftR_bvShr@core" was skipped *) + +Definition bvZipWith: forall (_1: forall (_1 _2: Init.Datatypes.bool), + Init.Datatypes.bool) (n: Init.Datatypes.nat) (_2 _3: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + zipWith Init.Datatypes.bool Init.Datatypes.bool Init.Datatypes.bool. + +Definition bvNot: forall (n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + map Init.Datatypes.bool Init.Datatypes.bool Init.Datatypes.negb. + +Definition bvAnd: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + bvZipWith Init.Datatypes.andb. + +Definition bvOr: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + bvZipWith Init.Datatypes.orb. + +Definition bvXor: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + bvZipWith Init.Datatypes.xorb. + +Definition bvEq: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + vecEq n Init.Datatypes.bool SAWCoreScaffolding.boolEqb x y + . + +(* "Prelude::bvEq_refl@core" was skipped *) + +(* "Prelude::equalNat_bv@core" was skipped *) + +Definition bvBool: forall (n: Init.Datatypes.nat) (_1: Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (b: Init.Datatypes.bool) + => + if b then + SAWCoreVectorsAsRocqVectors.bvNat n + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + else + SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero + . + +Definition bvNe: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + Init.Datatypes.negb (bvEq n x y) + . + +Definition bvNonzero: forall (n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + bvNe n x (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) + . + +Definition bvTrunc: forall (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + drop Init.Datatypes.bool. + +Definition bvUExt: forall (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.addNat m n) + Init.Datatypes.bool := + fun (m n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + append m n Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.bvNat m SAWCoreScaffolding.Zero) x + . + +Definition replicateBool: forall (n: Init.Datatypes.nat) + (_1: Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (b: Init.Datatypes.bool) + => + let var__0 + := + SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero + in + if b then + bvNot n var__0 + else + var__0 + . + +Definition bvSExt: forall (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.addNat m (SAWCoreScaffolding.Succ n)) + Init.Datatypes.bool := + fun (m n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + append m (SAWCoreScaffolding.Succ n) Init.Datatypes.bool + (replicateBool m (msb n x)) x + . + +Definition bvMin: forall (n: Init.Datatypes.nat) (_1 _2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + if SAWCoreVectorsAsRocqVectors.bvule n x y then + x + else + y + . + +Definition polyMul: forall (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ m) + Init.Datatypes.bool) (_2: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec + (SAWCoreScaffolding.Succ (SAWCoreScaffolding.addNat m n)) + Init.Datatypes.bool := + fun (m n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ m) + Init.Datatypes.bool) (y: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + let var__0 + := + SAWCoreScaffolding.Succ (SAWCoreScaffolding.addNat m n) + in + let var__1 + := + SAWCoreVectorsAsRocqVectors.Vec var__0 Init.Datatypes.bool + in + SAWCoreVectorsAsRocqVectors.foldl Init.Datatypes.bool var__1 + (SAWCoreScaffolding.Succ n) (fun (z: var__1) (yi: Init.Datatypes.bool) + => + let var__2 + := + SAWCoreScaffolding.Succ m + in + let var__3 + := + SAWCoreScaffolding.addNat m n + in + let var__4 + := + SAWCoreScaffolding.Succ var__3 + in + let var__5 + := + SAWCoreScaffolding.addNat n var__2 + in + let var__6 + := + SAWCoreScaffolding.addNat n m + in + bvXor var__4 + (SAWCoreVectorsAsRocqVectors.bvShl var__4 z + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (SAWCoreScaffolding.coerce + (SAWCoreVectorsAsRocqVectors.Vec var__5 + Init.Datatypes.bool) var__1 + (vecCong Init.Datatypes.bool var__5 var__4 + (trans Init.Datatypes.nat var__5 + (SAWCoreScaffolding.Succ var__6) var__4 + (SAWCoreScaffolding.eqNatAddS n m) + (eqNatSucc var__6 var__3 + (SAWCoreScaffolding.eqNatAddComm n m)))) + (bvUExt n var__2 (if yi then + x + else + SAWCoreVectorsAsRocqVectors.bvNat var__2 + SAWCoreScaffolding.Zero))) + ) (SAWCoreVectorsAsRocqVectors.bvNat var__0 SAWCoreScaffolding.Zero) y + . + +Definition polyMod: forall (m n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec m Init.Datatypes.bool) (_2: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool), + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool := + fun (m n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec m Init.Datatypes.bool) (y: + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool) + => + let var__0 + := + SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + Init.Datatypes.bool + in + (fun (reduce: forall (_1: var__0), var__0) + => + let var__1 + := + SAWCoreScaffolding.Succ n + in + Pair_fst (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) + (SAWCoreVectorsAsRocqVectors.foldr Init.Datatypes.bool + (SAWCoreScaffolding.PairType + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType)) m (fun + (xi: Init.Datatypes.bool) (acc: + SAWCoreScaffolding.PairType + (SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType)) + => + let var__2 + := + Pair_fst var__0 SAWCoreScaffolding.UnitType + (Pair_snd + (SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) acc) + in + SAWCoreScaffolding.PairValue + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) + (bvXor n (Pair_fst + (SAWCoreVectorsAsRocqVectors.Vec n + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) acc) (if xi then + SAWCoreVectorsAsRocqVectors.tail n + Init.Datatypes.bool var__2 + else + SAWCoreVectorsAsRocqVectors.bvNat n + SAWCoreScaffolding.Zero)) + (SAWCoreScaffolding.PairValue var__0 + SAWCoreScaffolding.UnitType + (reduce (SAWCoreVectorsAsRocqVectors.bvShl var__1 var__2 + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Unit) + ) + (SAWCoreScaffolding.PairValue + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) + (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero) + (SAWCoreScaffolding.PairValue var__0 + SAWCoreScaffolding.UnitType + (reduce (SAWCoreVectorsAsRocqVectors.bvNat var__1 + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Unit)) x) + ) (fun (u: var__0) + => + let var__1 + := + SAWCoreScaffolding.Succ n + in + bvMin var__1 u (bvXor var__1 u y) + ) + . + +Inductive Stream (a: Type) : Type := +| MkStream: forall (_1: forall (_1: Init.Datatypes.nat), a), Stream a +. + +#[global] Instance Inhabited_Stream (a:Type) (Ha:Inhabited a) : Inhabited (Stream a) := MkInhabited (Stream a) (MkStream a (fun _ => inhabitant)). +Definition Stream__rec: forall (a: Type) (p: forall (_1: Stream a), Type) + (_1: forall (f: forall (_1: Init.Datatypes.nat), a), p (MkStream a f)) + (str: Stream a), + p str := + fun (a: Type) (p: forall (_1: Stream a), Type) (f1: forall (f: forall + (_1: Init.Datatypes.nat), + a), + p (MkStream a f)) (str: Stream a) + => + @SAWCorePrelude.Stream_rect a p f1 str + . + +Definition streamUpd: forall (a: Type) (_1: Stream a) (_2: Init.Datatypes.nat) + (_3: a), + Stream a := + fun (a: Type) (strm: Stream a) (i: Init.Datatypes.nat) (y: a) + => + Stream__rec a (fun (strm': Stream a) => Stream a) (fun (s: forall + (_1: Init.Datatypes.nat), + a) + => + MkStream a (fun (j: Init.Datatypes.nat) + => + if SAWCoreScaffolding.equalNat i j then + y + else + s j + ) + ) strm + . + +Definition bvStreamUpd: forall (a: Type) (w: Init.Datatypes.nat) (_1: Stream a) + (_2: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (_3: a), + Stream a := + fun (a: Type) (w: Init.Datatypes.nat) (xs: Stream a) (i: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (y: a) + => + streamUpd a xs (SAWCoreVectorsAsRocqVectors.bvToNat w i) y + . + +Definition streamGet: forall (a: Type) (_1: Stream a) (_2: Init.Datatypes.nat), + a := + fun (a: Type) (strm: Stream a) (i: Init.Datatypes.nat) + => + Stream__rec a (fun (strm': Stream a) => a) (fun (s: forall + (_1: Init.Datatypes.nat), + a) + => + s i + ) strm + . + +Definition streamConst: forall (a: Type) (_1: a), Stream a := + fun (a: Type) (x: a) + => + MkStream a (fun (i: Init.Datatypes.nat) => x) + . + +Definition streamMap: forall (a b: Type) (_1: forall (_1: a), b) (_2: Stream a), + Stream b := + fun (a b: Type) (f: forall (_1: a), b) (xs: Stream a) + => + MkStream b (fun (i: Init.Datatypes.nat) => f (streamGet a xs i)) + . + +Definition streamMap2: forall (a b c: Type) (_1: forall (_1: a) (_2: b), c) + (_2: Stream a) (_3: Stream b), + Stream c := + fun (a b c: Type) (f: forall (_1: a) (_2: b), c) (xs: Stream a) (ys: + Stream b) + => + MkStream c (fun (i: Init.Datatypes.nat) + => + f (streamGet a xs i) (streamGet b ys i) + ) + . + +Definition streamTake: forall (a: Type) (n: Init.Datatypes.nat) (_1: Stream a), + SAWCoreVectorsAsRocqVectors.Vec n a := + fun (a: Type) (n: Init.Datatypes.nat) (xs: Stream a) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (i: Init.Datatypes.nat) + => + streamGet a xs i + ) + . + +Definition streamDrop: forall (a: Type) (n: Init.Datatypes.nat) (_1: Stream a), + Stream a := + fun (a: Type) (n: Init.Datatypes.nat) (xs: Stream a) + => + MkStream a (fun (i: Init.Datatypes.nat) + => + streamGet a xs (SAWCoreScaffolding.addNat n i) + ) + . + +Definition streamAppend: forall (a: Type) (n: Init.Datatypes.nat) (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (_2: Stream a), + Stream a := + fun (a: Type) (n: Init.Datatypes.nat) (xs: + SAWCoreVectorsAsRocqVectors.Vec n a) (ys: Stream a) + => + MkStream a (fun (i: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.atWithDefault n a + (streamGet a ys (SAWCoreScaffolding.subNat i n)) xs i + ) + . + +Definition streamJoin: forall (a: Type) {Inh_a: SAWCoreScaffolding.Inhabited a} + (n: Init.Datatypes.nat) (_1: + Stream (SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + a)), + Stream a := + fun (a: Type) (Inh_a: SAWCoreScaffolding.Inhabited a) (n: Init.Datatypes.nat) + (s: Stream (SAWCoreVectorsAsRocqVectors.Vec (SAWCoreScaffolding.Succ n) + a)) + => + MkStream a (fun (i: Init.Datatypes.nat) + => + let var__0 + := + SAWCoreScaffolding.Succ n + in + SAWCorePrelude.sawAt var__0 a + (streamGet (SAWCoreVectorsAsRocqVectors.Vec var__0 a) s + (divNat i var__0)) (modNat i var__0) + ) + . + +Definition streamSplit: forall (a: Type) (n: Init.Datatypes.nat) (_1: Stream a), + Stream (SAWCoreVectorsAsRocqVectors.Vec n a) := + fun (a: Type) (n: Init.Datatypes.nat) (xs: Stream a) + => + MkStream (SAWCoreVectorsAsRocqVectors.Vec n a) (fun + (i: Init.Datatypes.nat) + => + SAWCoreVectorsAsRocqVectors.gen n a (fun (j: Init.Datatypes.nat) + => + streamGet a xs + (SAWCoreScaffolding.addNat (SAWCoreScaffolding.mulNat i n) + j) + ) + ) + . + +Definition streamShiftL: forall (a: Type) (_1: Stream a) + (_2: Init.Datatypes.nat), + Stream a := + fun (a: Type) (xs: Stream a) (i: Init.Datatypes.nat) + => + streamDrop a i xs + . + +Definition streamShiftR: forall (a: Type) (_1: a) (_2: Stream a) + (_3: Init.Datatypes.nat), + Stream a := + fun (a: Type) (z: a) (xs: Stream a) (i: Init.Datatypes.nat) + => + streamAppend a i (replicate i a z) xs + . + +(* "Prelude::streamScanl@core" was skipped *) + +(* "Prelude::Integer@core" was skipped *) + +(* "Prelude::intAdd@core" was skipped *) + +(* "Prelude::intSub@core" was skipped *) + +(* "Prelude::intMul@core" was skipped *) + +(* "Prelude::intDiv@core" was skipped *) + +(* "Prelude::intMod@core" was skipped *) + +(* "Prelude::intMin@core" was skipped *) + +(* "Prelude::intMax@core" was skipped *) + +(* "Prelude::intNeg@core" was skipped *) + +(* "Prelude::intAbs@core" was skipped *) + +(* "Prelude::intEq@core" was skipped *) + +(* "Prelude::intLe@core" was skipped *) + +(* "Prelude::intLt@core" was skipped *) + +(* "Prelude::intToNat@core" was skipped *) + +(* "Prelude::natToInt@core" was skipped *) + +(* "Prelude::intToBv@core" was skipped *) + +(* "Prelude::bvToInt@core" was skipped *) + +(* "Prelude::sbvToInt@core" was skipped *) + +Definition intEven: forall (_1: SAWCoreScaffolding.Integer), + Init.Datatypes.bool := + fun (x: SAWCoreScaffolding.Integer) + => + SAWCoreScaffolding.intEqb + (SAWCoreScaffolding.intMod x + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero) + . + +(* "Prelude::IntMod@core" was skipped *) + +(* "Prelude::toIntMod@core" was skipped *) + +(* "Prelude::fromIntMod@core" was skipped *) + +(* "Prelude::intModEq@core" was skipped *) + +(* "Prelude::intModAdd@core" was skipped *) + +(* "Prelude::intModSub@core" was skipped *) + +(* "Prelude::intModMul@core" was skipped *) + +(* "Prelude::intModNeg@core" was skipped *) + +Definition updNatFun: forall (a: Type) (_1: forall (_1: Init.Datatypes.nat), a) + (_2: Init.Datatypes.nat) (_3: a) (_4: Init.Datatypes.nat), + a := + fun (a: Type) (f: forall (_1: Init.Datatypes.nat), a) (i: Init.Datatypes.nat) + (v: a) (x: Init.Datatypes.nat) + => + if SAWCoreScaffolding.equalNat i x then + v + else + f x + . + +Definition updBvFun: forall (n: Init.Datatypes.nat) (a: Type) (_1: forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + a) (_2: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (_3: a) (_4: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + a := + fun (n: Init.Datatypes.nat) (a: Type) (f: forall (_1: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + a) (i: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (v: a) (x: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + if bvEq n i x then + v + else + f x + . + +(* "Prelude::Float@core" was skipped *) + +(* "Prelude::mkFloat@core" was skipped *) + +(* "Prelude::Double@core" was skipped *) + +(* "Prelude::mkDouble@core" was skipped *) + +(* "Prelude::List" was skipped *) + +(* "Prelude::List__rec@core" was skipped *) + +Definition unfoldList: forall (a: Type) (_1: @Init.Datatypes.list a), + Init.Datatypes.sum SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType (@Init.Datatypes.list a) + SAWCoreScaffolding.UnitType)) := + fun (a: Type) (l: @Init.Datatypes.list a) + => + let var__0 + := + @Init.Datatypes.list a + in + @Init.Datatypes.list_rect a (fun (_1: var__0) + => + Init.Datatypes.sum SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType)) + ) (@Init.Datatypes.inl SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) + SAWCoreScaffolding.Unit) (fun (x: a) (l1: var__0) (_1: + Init.Datatypes.sum SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType))) + => + @Init.Datatypes.inr SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType)) + (SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue var__0 + SAWCoreScaffolding.UnitType l1 SAWCoreScaffolding.Unit)) + ) l + . + +Definition foldList: forall (a: Type) (_1: + Init.Datatypes.sum SAWCoreScaffolding.UnitType + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType (@Init.Datatypes.list a) + SAWCoreScaffolding.UnitType))), + @Init.Datatypes.list a := + fun (a: Type) + => + let var__0 + := + @Init.Datatypes.list a + in + let var__1 + := + SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType) + in + either SAWCoreScaffolding.UnitType var__1 var__0 (fun + (_1: SAWCoreScaffolding.UnitType) + => + @Init.Datatypes.nil a + ) (fun (tup: var__1) + => + @Init.Datatypes.cons a + (Pair_fst a + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) tup) + (Pair_fst var__0 SAWCoreScaffolding.UnitType + (Pair_snd a + (SAWCoreScaffolding.PairType var__0 + SAWCoreScaffolding.UnitType) tup)) + ) + . + +Inductive ListSort: Type := +| LS_Nil: ListSort +| LS_Cons: forall (_1: Type) (_2: ListSort), ListSort +. + +Definition ListSort__rec: forall (P: forall (_1: ListSort), Type) (_1: P LS_Nil) + (_2: forall (A: Type) (l: ListSort) (_2: P l), P (LS_Cons A l)) + (l: ListSort), + P l := + fun (P: forall (_1: ListSort), Type) (f1: P LS_Nil) (f2: forall (A: Type) + (l: ListSort) (_1: P l), + P (LS_Cons A l)) (l: ListSort) + => + @SAWCorePrelude.ListSort_rect P f1 f2 l + . + +Definition listSortGet: forall (_1: ListSort) (_2: Init.Datatypes.nat), Type := + ListSort__rec (fun (_1: ListSort) => forall (_2: Init.Datatypes.nat), Type) + (fun (_1: Init.Datatypes.nat) + => + @Init.Logic.eq Init.Datatypes.bool Init.Datatypes.true + Init.Datatypes.false + ) (fun (A: Type) (_1: ListSort) (rec: forall (_2: Init.Datatypes.nat), + Type) + => + Nat_cases Type A (fun (n: Init.Datatypes.nat) (_2: Type) => rec n) + ). + +Definition listSort_cases: forall (a: Type) (_1: a) (_2: forall (_2: Type) + (l: ListSort) (_3: a), + a) (_3: ListSort), + a := + fun (a: Type) (base: a) (f: forall (_1: Type) (l: ListSort) (_2: a), a) + (ls: ListSort) + => + ListSort__rec (fun (_1: ListSort) => a) base f ls + . + +Definition listSortDrop: forall (_1: ListSort) (_2: Init.Datatypes.nat), + ListSort := + fun (ss: ListSort) (n: Init.Datatypes.nat) + => + SAWCoreScaffolding.Nat__rec (fun (_1: Init.Datatypes.nat) + => + forall (_2: ListSort), + ListSort + ) (fun (l: ListSort) => l) (fun (_1: Init.Datatypes.nat) + (rec_n': forall (_2: ListSort), ListSort) (l: ListSort) + => + rec_n' (listSort_cases ListSort LS_Nil (fun (_2: Type) + (tail _3: ListSort) + => + tail + ) l) + ) n ss + . + +Definition listSort_length: forall (_1: ListSort), Init.Datatypes.nat := + listSort_cases Init.Datatypes.nat SAWCoreScaffolding.Zero (fun (_1: Type) + (_2: ListSort) (n: Init.Datatypes.nat) + => + SAWCoreScaffolding.Succ n + ). + +Definition ifLSNil: forall (a: Type) (_1: ListSort) (_2 _3: a), a := + fun (a: Type) (l: ListSort) (x y: a) + => + ListSort__rec (fun (_1: ListSort) => a) x (fun (_1: Type) (_2: ListSort) + (_3: a) + => + y + ) l + . + +Definition FalseProp: Prop := + @Init.Logic.eq Init.Datatypes.bool Init.Datatypes.true Init.Datatypes.false. + +Definition efq: forall (a: Type) (_1: FalseProp), a := + fun (a: Type) (contra: FalseProp) + => + let var__0 + := + if Init.Datatypes.true then + SAWCoreScaffolding.UnitType + else + a + in + SAWCoreScaffolding.coerce SAWCoreScaffolding.UnitType a + (trans Type SAWCoreScaffolding.UnitType var__0 a + (sym Type var__0 SAWCoreScaffolding.UnitType + (ite_true Type SAWCoreScaffolding.UnitType a)) + (trans Type var__0 (if Init.Datatypes.false then + SAWCoreScaffolding.UnitType + else + a) a + (eq_cong Init.Datatypes.bool Init.Datatypes.true + Init.Datatypes.false contra Type (fun + (b: Init.Datatypes.bool) + => + if b then + SAWCoreScaffolding.UnitType + else + a + )) (ite_false Type SAWCoreScaffolding.UnitType a))) + SAWCoreScaffolding.Unit + . + +Definition Eithers: forall (_1: ListSort), Type := + ListSort__rec (fun (_1: ListSort) => Type) FalseProp (fun (tp: Type) + (tail: ListSort) (rec: Type) + => + ifLSNil Type tail tp (Init.Datatypes.sum tp rec) + ). + +Definition eithers1: forall (tp: Type) (tps: ListSort) (a: Type) (_1: + Eithers (LS_Cons tp tps)) (_2: forall (_2: tp), a) (_3: forall (_3: + Eithers tps), + a), + a := + fun (tp: Type) (tps: ListSort) (a: Type) + => + ListSort__rec (fun (tps1: ListSort) + => + forall (_1: Eithers (LS_Cons tp tps1)) (_2: forall (_2: tp), a) + (_3: forall (_3: Eithers tps1), a), + a + ) (fun (eiths: tp) (f: forall (_1: tp), a) (_1: forall (_1: FalseProp), + a) + => + f eiths + ) (fun (tp2: Type) (tail: ListSort) (_1: forall (_1: + Eithers (LS_Cons tp tail)) (_2: forall (_2: tp), a) + (_3: forall (_3: Eithers tail), a), + a) (eiths: + Init.Datatypes.sum tp (Eithers (LS_Cons tp2 tail))) (f1: forall + (_2: tp), + a) (f2: forall (_2: Eithers (LS_Cons tp2 tail)), a) + => + either tp (Eithers (LS_Cons tp2 tail)) a f1 f2 eiths + ) tps + . + +Inductive FunsTo (a: Type) : Type := +| FunsTo_Nil: FunsTo a +| FunsTo_Cons: forall (tp: Type) (_1: forall (_1: tp), a) (_2: FunsTo a), + FunsTo a +. + +Definition FunsTo__rec: forall (a: Type) (P: forall (_1: FunsTo a), Type) (_1: + P (FunsTo_Nil a)) (_2: forall (tp: Type) (f: forall (_2: tp), a) + (es: FunsTo a) (_2: P es), + P (FunsTo_Cons a tp f es)) (es: FunsTo a), + P es := + fun (a: Type) (P: forall (_1: FunsTo a), Type) (f1: P (FunsTo_Nil a)) + (f2: forall (tp: Type) (f: forall (_1: tp), a) (es: FunsTo a) (_1: + P es), + P (FunsTo_Cons a tp f es)) (es: FunsTo a) + => + @SAWCorePrelude.FunsTo_rect a P f1 f2 es + . + +Definition FunsToIns: forall (a: Type) (_1: FunsTo a), ListSort := + fun (a: Type) + => + FunsTo__rec a (fun (_1: FunsTo a) => ListSort) LS_Nil (fun (tp: Type) + (_1: forall (_1: tp), a) (_2: FunsTo a) (rec: ListSort) + => + LS_Cons tp rec + ) + . + +Definition eithers: forall (a: Type) (elims: FunsTo a) (_1: + Eithers (FunsToIns a elims)), + a := + fun (a: Type) + => + FunsTo__rec a (fun (elims: FunsTo a) + => + forall (_1: Eithers (FunsToIns a elims)), + a + ) (fun (contra: FalseProp) => efq a contra) (fun (tp: Type) (f: forall + (_1: tp), + a) (elims: FunsTo a) (rec: forall (_1: + Eithers (FunsToIns a elims)), + a) (eiths: Eithers (LS_Cons tp (FunsToIns a elims))) + => + eithers1 tp (FunsToIns a elims) a eiths f rec + ) + . + +Definition EithersV: forall (_1: ListSort), Type := + ListSort__rec (fun (_1: ListSort) => Type) Init.Datatypes.Empty_set (fun + (tp: Type) (_1: ListSort) (rec: Type) + => + Init.Datatypes.sum tp rec + ). + +Definition eithersV: forall (a: Type) (es: FunsTo a) (_1: + EithersV (FunsToIns a es)), + a := + fun (a: Type) + => + FunsTo__rec a (fun (es: FunsTo a) + => + forall (_1: EithersV (FunsToIns a es)), + a + ) (fun (v: Init.Datatypes.Empty_set) => elimVoid a v) (fun (tp: Type) + (f: forall (_1: tp), a) (es: FunsTo a) (rec: forall (_1: + EithersV (FunsToIns a es)), + a) + => + either tp (EithersV (FunsToIns a es)) a f rec + ) + . + +Definition arrowsType: forall (_1: ListSort) (_2: Type), Type := + fun (as1: ListSort) (b: Type) + => + ListSort__rec (fun (_1: ListSort) => Type) b (fun (a: Type) (_1: ListSort) + (rec: Type) + => + forall (_2: a), + rec + ) as1 + . + +Definition arrowsSort: forall (_1: ListSort), Type := + fun (as1: ListSort) + => + @SAWCorePrelude.ListSort_rect (fun (_1: ListSort) => Type) Type (fun + (a: Type) (_1: ListSort) (rec: Type) + => + forall (_2: a), + rec + ) as1 + . + +(* "Prelude::unsafeAssertBVULt@core" was skipped *) + +(* "Prelude::unsafeAssertBVULe@core" was skipped *) + +Axiom bvEqToEq: forall (n: Init.Datatypes.nat) (v1 v2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: + @Init.Logic.eq Init.Datatypes.bool (bvEq n v1 v2) + Init.Datatypes.true), + @Init.Logic.eq (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + v1 v2. + +Definition ifBvEqWithProof: forall (a: Type) (n: Init.Datatypes.nat) (v1 v2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: a) + (_2: forall (_2: + @Init.Logic.eq + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 + v2), + a), + a := + fun (a: Type) (n: Init.Datatypes.nat) (v1 v2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (x: a) + (f: forall (_1: @Init.Logic.eq + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 + v2), + a) + => + let var__0 + := + bvEq n v1 v2 + in + ifWithProof a var__0 x (fun (pf: + @Init.Logic.eq Init.Datatypes.bool var__0 Init.Datatypes.true) + => + f (bvEqToEq n v1 v2 pf) + ) + . + +Axiom bvEqToEqNat: forall (n: Init.Datatypes.nat) (v1 v2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: + @Init.Logic.eq + (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) v1 v2), + eqNat (SAWCoreVectorsAsRocqVectors.bvToNat n v1) + (SAWCoreVectorsAsRocqVectors.bvToNat n v2). + +Axiom bvultToIsLtNat: forall (n: Init.Datatypes.nat) (v1 v2: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.bvult n v1 v2) Init.Datatypes.true), + SAWCoreScaffolding.IsLtNat (SAWCoreVectorsAsRocqVectors.bvToNat n v1) + (SAWCoreVectorsAsRocqVectors.bvToNat n v2). + +(* "Prelude::genWithProof@core" was skipped *) + +(* "Prelude::atWithProof@core" was skipped *) + +Axiom updWithProof: forall (n: Init.Datatypes.nat) (a: Type) (_1: + SAWCoreVectorsAsRocqVectors.Vec n a) (i: Init.Datatypes.nat) (_2: a) + (_3: SAWCoreScaffolding.IsLtNat i n), + SAWCoreVectorsAsRocqVectors.Vec n a. + +Axiom sliceWithProof: forall (a: Type) (n off len: Init.Datatypes.nat) (_1: + SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.addNat off len) n) + (_2: SAWCoreVectorsAsRocqVectors.Vec n a), + SAWCoreVectorsAsRocqVectors.Vec len a. + +Axiom updSliceWithProof: forall (a: Type) (n off len: Init.Datatypes.nat) (_1: + SAWCoreScaffolding.IsLeNat (SAWCoreScaffolding.addNat off len) n) + (_2: SAWCoreVectorsAsRocqVectors.Vec n a) (_3: + SAWCoreVectorsAsRocqVectors.Vec len a), + SAWCoreVectorsAsRocqVectors.Vec n a. + +Definition is_bvult: forall (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Prop := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.bvult n x y) Init.Datatypes.true + . + +Definition is_bvule: forall (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Prop := + fun (n: Init.Datatypes.nat) (x y: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + => + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.bvule n x y) Init.Datatypes.true + . + +Axiom not_bvult_zero: forall (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.bvult n x + (SAWCoreVectorsAsRocqVectors.bvNat n SAWCoreScaffolding.Zero)) + Init.Datatypes.false. + +Axiom trans_bvult_bvule: forall (n: Init.Datatypes.nat) (x y z: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: + is_bvult n x y) (_2: is_bvule n y z), + is_bvult n x z. + +Axiom bvult_sub_add_bvult: forall (n: Init.Datatypes.nat) (x y z: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: + is_bvule n y z) (_2: + is_bvult n x (SAWCoreVectorsAsRocqVectors.bvSub n z y)), + is_bvult n (SAWCoreVectorsAsRocqVectors.bvAdd n y x) z. + +Axiom bvult_sum_bvult_sub: forall (n: Init.Datatypes.nat) (x y z: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_1: + is_bvult n x (SAWCoreVectorsAsRocqVectors.bvAdd n y z)) (_2: + @Init.Logic.eq Init.Datatypes.bool + (SAWCoreVectorsAsRocqVectors.bvult n x y) Init.Datatypes.false), + is_bvult n (SAWCoreVectorsAsRocqVectors.bvSub n x y) z. + +Axiom IsLtNat_to_bvult: forall (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (i: Init.Datatypes.nat) (_1: + SAWCoreScaffolding.IsLtNat i + (SAWCoreVectorsAsRocqVectors.bvToNat n x)), + is_bvult n (SAWCoreVectorsAsRocqVectors.bvNat n i) x. + +Axiom bvult_to_IsLtNat: forall (n: Init.Datatypes.nat) (x: + SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) + (i: Init.Datatypes.nat) (_1: + is_bvult n (SAWCoreVectorsAsRocqVectors.bvNat n i) x), + SAWCoreScaffolding.IsLtNat i (SAWCoreVectorsAsRocqVectors.bvToNat n x). + +Definition BV_complete_induction: forall (w: Init.Datatypes.nat) (p: forall + (_1: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + Prop) (_1: forall (x: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + (_1: forall (y: SAWCoreVectorsAsRocqVectors.Vec w + Init.Datatypes.bool) (_1: is_bvult w y x), + p y), + p x) (x: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + p x := + fun (w: Init.Datatypes.nat) (p: forall (_1: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool), + Prop) (f: forall (x: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + (_1: forall (y: SAWCoreVectorsAsRocqVectors.Vec w + Init.Datatypes.bool) (_1: is_bvult w y x), + p y), + p x) (x: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + => + let var__0 + := + SAWCoreVectorsAsRocqVectors.bvToNat w x + in + Nat_complete_induction (fun (n: Init.Datatypes.nat) + => + forall (x1: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + (_1: SAWCoreScaffolding.IsLeNat + (SAWCoreVectorsAsRocqVectors.bvToNat w x1) n), + p x1 + ) (fun (n: Init.Datatypes.nat) (Hind: forall (m: Init.Datatypes.nat) + (Hm: SAWCoreScaffolding.IsLtNat m n) (y: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + (Hy: SAWCoreScaffolding.IsLeNat + (SAWCoreVectorsAsRocqVectors.bvToNat w y) m), + p y) (x1: + SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) (Hx: + SAWCoreScaffolding.IsLeNat + (SAWCoreVectorsAsRocqVectors.bvToNat w x1) n) + => + f x1 (fun (y: SAWCoreVectorsAsRocqVectors.Vec w Init.Datatypes.bool) + (Hult: is_bvult w y x1) + => + let var__1 + := + SAWCoreVectorsAsRocqVectors.bvToNat w y + in + Hind var__1 + (IsLeNat_transitive (SAWCoreScaffolding.Succ var__1) + (SAWCoreVectorsAsRocqVectors.bvToNat w x1) n + (bvultToIsLtNat w y x1 Hult) Hx) y + (SAWCoreScaffolding.IsLeNat_base var__1) + ) + ) var__0 x (SAWCoreScaffolding.IsLeNat_base var__0) + . + +Axiom Array: forall (_1 _2: Type), + Type. + +Axiom arrayConstant: forall (a b: Type) (_1: b), + Array a b. + +Axiom arrayLookup: forall (a b: Type) (_1: Array a b) (_2: a), + b. + +Axiom arrayUpdate: forall (a b: Type) (_1: Array a b) (_2: a) (_3: b), + Array a b. + +Axiom arrayCopy: forall (n: Init.Datatypes.nat) (a: Type) (_1: + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a) + (_2: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_3: + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a) + (_4 _5: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a. + +Axiom arraySet: forall (n: Init.Datatypes.nat) (a: Type) (_1: + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a) + (_2: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_3: a) + (_4: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a. + +Axiom arrayRangeEq: forall (n: Init.Datatypes.nat) (a: Type) (_1: + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a) + (_2: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) (_3: + Array (SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool) a) + (_4 _5: SAWCoreVectorsAsRocqVectors.Vec n Init.Datatypes.bool), + Init.Datatypes.bool. + +Axiom arrayEq: forall (a b: Type) (_1 _2: Array a b), + Init.Datatypes.bool. + +(* "Prelude::Rational@core" was skipped *) + +(* "Prelude::ratio@core" was skipped *) + +(* "Prelude::rationalEq@core" was skipped *) + +(* "Prelude::rationalLe@core" was skipped *) + +(* "Prelude::rationalLt@core" was skipped *) + +(* "Prelude::rationalAdd@core" was skipped *) + +(* "Prelude::rationalSub@core" was skipped *) + +(* "Prelude::rationalMul@core" was skipped *) + +(* "Prelude::rationalNeg@core" was skipped *) + +Definition integerToRational: forall (_1: SAWCoreScaffolding.Integer), + SAWCoreScaffolding.Rational := + fun (x: SAWCoreScaffolding.Integer) + => + SAWCoreScaffolding.ratio x + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + . + +Definition rationalZero: SAWCoreScaffolding.Rational := + SAWCoreScaffolding.ratio + (SAWCoreScaffolding.natToInt SAWCoreScaffolding.Zero) + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)). + +Definition rationalHalf: SAWCoreScaffolding.Rational := + SAWCoreScaffolding.ratio + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))). + +(* "Prelude::rationalRecip@core" was skipped *) + +Definition rationalDiv: forall (_1 _2: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Rational := + fun (x y: SAWCoreScaffolding.Rational) + => + SAWCoreScaffolding.rationalMul x (SAWCoreScaffolding.rationalRecip y) + . + +(* "Prelude::rationalFloor@core" was skipped *) + +Definition rationalCeiling: forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer := + fun (r: SAWCoreScaffolding.Rational) + => + SAWCoreScaffolding.intNeg + (SAWCoreScaffolding.rationalFloor (SAWCoreScaffolding.rationalNeg r)) + . + +Definition rationalTrunc: forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer := + fun (r: SAWCoreScaffolding.Rational) + => + if SAWCoreScaffolding.rationalLt r rationalZero then + rationalCeiling r + else + SAWCoreScaffolding.rationalFloor r + . + +Definition rationalRoundAway: forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer := + fun (r: SAWCoreScaffolding.Rational) + => + if SAWCoreScaffolding.rationalLt r rationalZero then + rationalCeiling (SAWCoreScaffolding.rationalSub r rationalHalf) + else + SAWCoreScaffolding.rationalFloor + (SAWCoreScaffolding.rationalAdd r rationalHalf) + . + +Definition rationalRoundToEven: forall (_1: SAWCoreScaffolding.Rational), + SAWCoreScaffolding.Integer := + fun (r: SAWCoreScaffolding.Rational) + => + let var__0 + := + SAWCoreScaffolding.rationalFloor r + in + let var__1 + := + SAWCoreScaffolding.intAdd var__0 + (SAWCoreScaffolding.natToInt + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + in + let var__2 + := + SAWCoreScaffolding.rationalSub r (integerToRational var__0) + in + if SAWCoreScaffolding.rationalLt var__2 rationalHalf then + var__0 + else + if SAWCoreScaffolding.rationalLt rationalHalf var__2 then + var__1 + else + if intEven var__0 then + var__0 + else + var__1 + . + +(* "Prelude::bveq_sameL@core" was skipped *) + +(* "Prelude::bveq_sameR@core" was skipped *) + +(* "Prelude::bveq_same2@core" was skipped *) + +(* "Prelude::ite_split_cong@core" was skipped *) + +(* "Prelude::ite_join_cong@core" was skipped *) + +(* "Prelude::map_map@core" was skipped *) + +End SAWCorePrelude. diff --git a/otherTests/saw-core-rocq/test_prelude_1.vo.log.good b/otherTests/saw-core-rocq/test_prelude_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records.log.good b/otherTests/saw-core-rocq/test_records.log.good index f4724ae092..2f924ec530 100644 --- a/otherTests/saw-core-rocq/test_records.log.good +++ b/otherTests/saw-core-rocq/test_records.log.good @@ -1,444 +1 @@ Loading file "test_records.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - SAWCoreScaffolding.RecordTypeCons "x"%string var__0 (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 SAWCoreScaffolding.RecordTypeNil) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - @SAWCoreScaffolding.RecordCons "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Single : SAWCoreScaffolding.RecordTypeCons "val"%string (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - @SAWCoreScaffolding.RecordCons "val"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) SAWCoreScaffolding.RecordNil. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Three : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - SAWCoreScaffolding.RecordTypeCons "a"%string var__0 (SAWCoreScaffolding.RecordTypeCons "b"%string var__0 (SAWCoreScaffolding.RecordTypeCons "c"%string var__0 SAWCoreScaffolding.RecordTypeNil)) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - @SAWCoreScaffolding.RecordCons "a"%string var__1 (SAWCoreScaffolding.RecordTypeCons "b"%string var__1 (SAWCoreScaffolding.RecordTypeCons "c"%string var__1 SAWCoreScaffolding.RecordTypeNil)) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "b"%string var__1 (SAWCoreScaffolding.RecordTypeCons "c"%string var__1 SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) (@SAWCoreScaffolding.RecordCons "c"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_MixedWidth : SAWCoreScaffolding.RecordTypeCons "x"%string (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "y"%string (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) in - @SAWCoreScaffolding.RecordCons "x"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "y"%string (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) (@SAWCoreScaffolding.RecordCons "y"%string (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1)) SAWCoreScaffolding.RecordNil). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Nested : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - SAWCoreScaffolding.RecordTypeCons "inner"%string (SAWCoreScaffolding.RecordTypeCons "x"%string var__0 (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.RecordTypeCons "z"%string var__0 SAWCoreScaffolding.RecordTypeNil) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - @SAWCoreScaffolding.RecordCons "inner"%string (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.RecordTypeCons "z"%string var__1 SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "z"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_ProjY : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - @SAWCoreScaffolding.recordHead "y"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (@SAWCoreScaffolding.recordTail "x"%string SAWCoreScaffolding.Integer (SAWCoreScaffolding.RecordTypeCons "y"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "x"%string SAWCoreScaffolding.Integer (SAWCoreScaffolding.RecordTypeCons "y"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (@SAWCoreScaffolding.RecordCons "y"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) SAWCoreScaffolding.RecordNil))). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_NestedProj : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - @SAWCoreScaffolding.recordHead "x"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "y"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.recordHead "inner"%string (SAWCoreScaffolding.RecordTypeCons "x"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "y"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.RecordTypeCons "z"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "inner"%string (SAWCoreScaffolding.RecordTypeCons "x"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "y"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.RecordTypeCons "z"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "x"%string (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.RecordTypeCons "y"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) (@SAWCoreScaffolding.RecordCons "y"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "z"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) SAWCoreScaffolding.RecordNil))). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Update1 : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - SAWCoreScaffolding.RecordTypeCons "x"%string var__0 (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 SAWCoreScaffolding.RecordTypeNil) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.const var__1 var__1 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2)) (@SAWCoreScaffolding.RecordCons "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Tuple : SAWCoreScaffolding.PairType Init.Datatypes.bool (SAWCoreScaffolding.PairType Init.Datatypes.bool SAWCoreScaffolding.UnitType) := - SAWCoreScaffolding.PairValue Init.Datatypes.bool (SAWCoreScaffolding.PairType Init.Datatypes.bool SAWCoreScaffolding.UnitType) Init.Datatypes.true (SAWCoreScaffolding.PairValue Init.Datatypes.bool SAWCoreScaffolding.UnitType Init.Datatypes.true SAWCoreScaffolding.Unit). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Nested (u1305 : Type) {Inh_u1305 : SAWCoreScaffolding.Inhabited u1305} (_P : CryptolPrimitivesForSAWCore.PLiteral u1305) : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - SAWCoreScaffolding.RecordTypeCons "pt"%string (SAWCoreScaffolding.RecordTypeCons "x"%string var__0 (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - @SAWCoreScaffolding.RecordCons "pt"%string (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil)) (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "x"%string var__1 (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) u1305 _P) SAWCoreScaffolding.RecordNil). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_Update2 : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil in - let var__4 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) var__1 var__2 in - CryptolPrimitivesForSAWCore.ecEq (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3) (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__4 (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 SAWCoreScaffolding.RecordTypeNil var__4 CryptolPrimitivesForSAWCore.PEqEmpty)) (CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__1 var__3 (CryptolPrimitivesForSAWCore.const var__1 var__1 var__5) (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil))) (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 var__5 (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__1 var__2) SAWCoreScaffolding.RecordNil)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_TupleUpdate : Init.Datatypes.bool := - let var__0 := SAWCoreScaffolding.PairType Init.Datatypes.bool SAWCoreScaffolding.UnitType in - CryptolPrimitivesForSAWCore.ecEq (SAWCoreScaffolding.PairType Init.Datatypes.bool var__0) (CryptolPrimitivesForSAWCore.PEqPair Init.Datatypes.bool var__0 CryptolPrimitivesForSAWCore.PEqBit (CryptolPrimitivesForSAWCore.PEqPair Init.Datatypes.bool SAWCoreScaffolding.UnitType CryptolPrimitivesForSAWCore.PEqBit CryptolPrimitivesForSAWCore.PEqUnit)) (CryptolPrimitivesForSAWCore.updFst Init.Datatypes.bool var__0 (CryptolPrimitivesForSAWCore.const Init.Datatypes.bool Init.Datatypes.bool Init.Datatypes.false) (SAWCoreScaffolding.PairValue Init.Datatypes.bool var__0 Init.Datatypes.true (SAWCoreScaffolding.PairValue Init.Datatypes.bool SAWCoreScaffolding.UnitType Init.Datatypes.true SAWCoreScaffolding.Unit))) (SAWCoreScaffolding.PairValue Init.Datatypes.bool var__0 Init.Datatypes.false (SAWCoreScaffolding.PairValue Init.Datatypes.bool SAWCoreScaffolding.UnitType Init.Datatypes.true SAWCoreScaffolding.Unit)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_RelativeUpdate : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil in - let var__4 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 in - let var__5 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__1 var__2 in - let var__6 := @SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.RecordNil) in - CryptolPrimitivesForSAWCore.ecEq (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3) (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__4 (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 SAWCoreScaffolding.RecordTypeNil var__4 CryptolPrimitivesForSAWCore.PEqEmpty)) (CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__1 var__3 (CryptolPrimitivesForSAWCore.const var__1 var__1 ((fun (x : var__1) => let var__7 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__8 := CryptolPrimitivesForSAWCore.seq var__7 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__8 (CryptolPrimitivesForSAWCore.PRingSeqBool var__7) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__8 var__2)) (@SAWCoreScaffolding.recordHead "x"%string var__1 var__3 var__6))) var__6) (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 var__5 (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil var__5 SAWCoreScaffolding.RecordNil)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_NestedField1 : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil in - let var__4 := SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3 in - let var__5 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 in - let var__6 := SAWCoreScaffolding.RecordTypeCons "size"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil in - let var__7 := (fun (u1305 : Type) (Inh_u1305 : SAWCoreScaffolding.Inhabited u1305) (_P : CryptolPrimitivesForSAWCore.PLiteral u1305) => let var__8 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__9 := CryptolPrimitivesForSAWCore.seq var__8 Init.Datatypes.bool in - let var__10 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__8 in - @SAWCoreScaffolding.RecordCons "pt"%string var__4 (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "x"%string var__9 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__9 var__10) (@SAWCoreScaffolding.RecordCons "y"%string var__9 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__9 var__10) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) u1305 _P) SAWCoreScaffolding.RecordNil)) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger in - CryptolPrimitivesForSAWCore.ecEq (SAWCoreScaffolding.RecordTypeCons "pt"%string var__4 var__6) (CryptolPrimitivesForSAWCore.PEqRecord "pt"%string var__4 var__6 (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__5 (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 SAWCoreScaffolding.RecordTypeNil var__5 CryptolPrimitivesForSAWCore.PEqEmpty)) (CryptolPrimitivesForSAWCore.PEqRecord "size"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil CryptolPrimitivesForSAWCore.PEqInteger CryptolPrimitivesForSAWCore.PEqEmpty)) (CryptolPrimitivesForSAWCore.updHeadRecord "pt"%string var__4 var__6 (CryptolPrimitivesForSAWCore.const var__4 var__4 ((fun (r : var__4) => let var__8 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__9 := CryptolPrimitivesForSAWCore.seq var__8 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__9 var__3 (CryptolPrimitivesForSAWCore.const var__9 var__9 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__9 var__2)) r) (@SAWCoreScaffolding.recordHead "pt"%string var__4 var__6 var__7))) var__7) (@SAWCoreScaffolding.RecordCons "pt"%string var__4 var__6 (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__1 var__2) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "size"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) SAWCoreScaffolding.RecordNil)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestRec_NestedField2 : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := SAWCoreScaffolding.RecordTypeCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil in - let var__4 := SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3 in - let var__5 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 in - let var__6 := SAWCoreScaffolding.RecordTypeCons "size"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil in - let var__7 := (fun (u1305 : Type) (Inh_u1305 : SAWCoreScaffolding.Inhabited u1305) (_P : CryptolPrimitivesForSAWCore.PLiteral u1305) => let var__8 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__9 := CryptolPrimitivesForSAWCore.seq var__8 Init.Datatypes.bool in - let var__10 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__8 in - @SAWCoreScaffolding.RecordCons "pt"%string var__4 (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil) (@SAWCoreScaffolding.RecordCons "x"%string var__9 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__9 var__10) (@SAWCoreScaffolding.RecordCons "y"%string var__9 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__9 var__10) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "size"%string u1305 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) u1305 _P) SAWCoreScaffolding.RecordNil)) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger in - CryptolPrimitivesForSAWCore.ecEq (SAWCoreScaffolding.RecordTypeCons "pt"%string var__4 var__6) (CryptolPrimitivesForSAWCore.PEqRecord "pt"%string var__4 var__6 (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__5 (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 SAWCoreScaffolding.RecordTypeNil var__5 CryptolPrimitivesForSAWCore.PEqEmpty)) (CryptolPrimitivesForSAWCore.PEqRecord "size"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil CryptolPrimitivesForSAWCore.PEqInteger CryptolPrimitivesForSAWCore.PEqEmpty)) (CryptolPrimitivesForSAWCore.updHeadRecord "pt"%string var__4 var__6 (CryptolPrimitivesForSAWCore.const var__4 var__4 ((fun (r : var__4) => let var__8 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__8 var__3 (CryptolPrimitivesForSAWCore.const var__8 var__8 ((fun (x : var__8) => let var__9 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__10 := CryptolPrimitivesForSAWCore.seq var__9 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__10 (CryptolPrimitivesForSAWCore.PRingSeqBool var__9) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__10 var__2)) (@SAWCoreScaffolding.recordHead "x"%string var__8 var__3 r))) r) (@SAWCoreScaffolding.recordHead "pt"%string var__4 var__6 var__7))) var__7) (@SAWCoreScaffolding.RecordCons "pt"%string var__4 var__6 (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) var__1 var__2) (@SAWCoreScaffolding.RecordCons "y"%string var__1 SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__1 var__2) SAWCoreScaffolding.RecordNil)) (@SAWCoreScaffolding.RecordCons "size"%string SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) SAWCoreScaffolding.RecordNil)). - diff --git a/otherTests/saw-core-rocq/test_records.saw b/otherTests/saw-core-rocq/test_records.saw index 8200821788..2af7293797 100644 --- a/otherTests/saw-core-rocq/test_records.saw +++ b/otherTests/saw-core-rocq/test_records.saw @@ -1,45 +1,45 @@ // Test: Record types, values, operations. let t1 = {{ {x = 1, y = 2} : {x : [8], y : [8]} }}; -write_rocq_term "TestRec" [] [] "" t1; +write_rocq_term "TestRec" [] [] "test_records_1.v" t1; let t2 = {{ {val = 42} : {val : [8]} }}; -write_rocq_term "TestRec_Single" [] [] "" t2; +write_rocq_term "TestRec_Single" [] [] "test_records_2.v" t2; let t3 = {{ {a = 1, b = 2, c = 3} : {a : [8], b : [8], c : [8]} }}; -write_rocq_term "TestRec_Three" [] [] "" t3; +write_rocq_term "TestRec_Three" [] [] "test_records_3.v" t3; let t4 = {{ {x = 1, y = 2} : {x : [8], y : [16]} }}; -write_rocq_term "TestRec_MixedWidth" [] [] "" t4; +write_rocq_term "TestRec_MixedWidth" [] [] "test_records_4.v" t4; let t5 = {{ {inner = {x = 1, y = 2}, z = 3} : {inner : {x : [8], y : [8]}, z : [8]} }}; -write_rocq_term "TestRec_Nested" [] [] "" t5; +write_rocq_term "TestRec_Nested" [] [] "test_records_5.v" t5; let t6 = {{ {x = 42, y = 100}.y : [8] }}; -write_rocq_term "TestRec_ProjY" [] [] "" t6; +write_rocq_term "TestRec_ProjY" [] [] "test_records_6.v" t6; let t7 = {{ {inner = {x = 1, y = 2}, z = 3}.inner.x : [8] }}; -write_rocq_term "TestRec_NestedProj" [] [] "" t7; +write_rocq_term "TestRec_NestedProj" [] [] "test_records_7.v" t7; let t8 = {{ { t1 | x = 3 } : {x : [8], y : [8]} }}; -write_rocq_term "TestRec_Update1" [] [] "" t8; +write_rocq_term "TestRec_Update1" [] [] "test_records_8.v" t8; let t9 = {{ (True, True) }}; -write_rocq_term "TestRec_Tuple" [] [] "" t9; +write_rocq_term "TestRec_Tuple" [] [] "test_records_9.v" t9; let t10 = {{ { pt = t1, size = 100 } }}; -write_rocq_term "TestRec_Nested" [] [] "" t10; +write_rocq_term "TestRec_Nested" [] [] "test_records_10.v" t10; let t11 = {{ { t1 | x = 30 } == { x = 30, y = 20 } }}; -write_rocq_term "TestRec_Update2" [] [] "" t11; +write_rocq_term "TestRec_Update2" [] [] "test_records_11.v" t11; let t12 = {{ { t9 | 0 = False } == (False,True) }}; -write_rocq_term "TestRec_TupleUpdate" [] [] "" t12; +write_rocq_term "TestRec_TupleUpdate" [] [] "test_records_12.v" t12; let t13 = {{ { t1 | x -> x + 5 } == { x = 20, y = 20 } }}; -write_rocq_term "TestRec_RelativeUpdate" [] [] "" t13; +write_rocq_term "TestRec_RelativeUpdate" [] [] "test_records_13.v" t13; let t14 = {{ { t10 | pt.x = 10 } == { pt = { x = 10, y = 20 }, size = 100 } }}; -write_rocq_term "TestRec_NestedField1" [] [] "" t14; +write_rocq_term "TestRec_NestedField1" [] [] "test_records_14.v" t14; let t15 = {{ { t10 | pt.x -> x + 10 } == { pt = { x = 25, y = 20 }, size = 100 } }}; -write_rocq_term "TestRec_NestedField2" [] [] "" t15; +write_rocq_term "TestRec_NestedField2" [] [] "test_records_15.v" t15; diff --git a/otherTests/saw-core-rocq/test_records_1.v.good b/otherTests/saw-core-rocq/test_records_1.v.good new file mode 100644 index 0000000000..c5c30fddc3 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_1.v.good @@ -0,0 +1,65 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + SAWCoreScaffolding.RecordTypeCons "x"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 + SAWCoreScaffolding.RecordTypeNil) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + @SAWCoreScaffolding.RecordCons "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil). diff --git a/otherTests/saw-core-rocq/test_records_1.vo.log.good b/otherTests/saw-core-rocq/test_records_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_10.v.good b/otherTests/saw-core-rocq/test_records_10.v.good new file mode 100644 index 0000000000..fac8a8861c --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_10.v.good @@ -0,0 +1,90 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Nested + (u1305: Type) + {Inh_u1305: SAWCoreScaffolding.Inhabited u1305} + (_P: CryptolPrimitivesForSAWCore.PLiteral u1305) + : let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + SAWCoreScaffolding.RecordTypeCons "pt"%string + (SAWCoreScaffolding.RecordTypeCons "x"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + @SAWCoreScaffolding.RecordCons "pt"%string + (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + u1305 _P) SAWCoreScaffolding.RecordNil). diff --git a/otherTests/saw-core-rocq/test_records_10.vo.log.good b/otherTests/saw-core-rocq/test_records_10.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_11.v.good b/otherTests/saw-core-rocq/test_records_11.v.good new file mode 100644 index 0000000000..4cd9910627 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_11.v.good @@ -0,0 +1,90 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Update2: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + in + let var__4 + := + CryptolPrimitivesForSAWCore.PEqSeqBool var__0 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2 + in + CryptolPrimitivesForSAWCore.ecEq + (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3) + (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__4 + (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil var__4 + CryptolPrimitivesForSAWCore.PEqEmpty)) + (CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__1 var__3 + (CryptolPrimitivesForSAWCore.const var__1 var__1 var__5) + (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__1 var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + var__1 var__2) SAWCoreScaffolding.RecordNil))) + (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 var__5 + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2) SAWCoreScaffolding.RecordNil)). diff --git a/otherTests/saw-core-rocq/test_records_11.vo.log.good b/otherTests/saw-core-rocq/test_records_11.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_12.v.good b/otherTests/saw-core-rocq/test_records_12.v.good new file mode 100644 index 0000000000..d7eb9617da --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_12.v.good @@ -0,0 +1,48 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_TupleUpdate: Init.Datatypes.bool := + let var__0 + := + SAWCoreScaffolding.PairType Init.Datatypes.bool + SAWCoreScaffolding.UnitType + in + CryptolPrimitivesForSAWCore.ecEq + (SAWCoreScaffolding.PairType Init.Datatypes.bool var__0) + (CryptolPrimitivesForSAWCore.PEqPair Init.Datatypes.bool var__0 + CryptolPrimitivesForSAWCore.PEqBit + (CryptolPrimitivesForSAWCore.PEqPair Init.Datatypes.bool + SAWCoreScaffolding.UnitType CryptolPrimitivesForSAWCore.PEqBit + CryptolPrimitivesForSAWCore.PEqUnit)) + (CryptolPrimitivesForSAWCore.updFst Init.Datatypes.bool var__0 + (CryptolPrimitivesForSAWCore.const Init.Datatypes.bool + Init.Datatypes.bool Init.Datatypes.false) + (SAWCoreScaffolding.PairValue Init.Datatypes.bool var__0 + Init.Datatypes.true + (SAWCoreScaffolding.PairValue Init.Datatypes.bool + SAWCoreScaffolding.UnitType Init.Datatypes.true + SAWCoreScaffolding.Unit))) + (SAWCoreScaffolding.PairValue Init.Datatypes.bool var__0 + Init.Datatypes.false + (SAWCoreScaffolding.PairValue Init.Datatypes.bool + SAWCoreScaffolding.UnitType Init.Datatypes.true + SAWCoreScaffolding.Unit)). diff --git a/otherTests/saw-core-rocq/test_records_12.vo.log.good b/otherTests/saw-core-rocq/test_records_12.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_13.v.good b/otherTests/saw-core-rocq/test_records_13.v.good new file mode 100644 index 0000000000..f21ea3a8a2 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_13.v.good @@ -0,0 +1,110 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_RelativeUpdate: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + in + let var__4 + := + CryptolPrimitivesForSAWCore.PEqSeqBool var__0 + in + let var__5 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2 + in + let var__6 + := + @SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil) + in + CryptolPrimitivesForSAWCore.ecEq + (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3) + (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__4 + (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil var__4 + CryptolPrimitivesForSAWCore.PEqEmpty)) + (CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__1 var__3 + (CryptolPrimitivesForSAWCore.const var__1 var__1 + ((fun (x: var__1) + => + let var__7 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__8 + := + CryptolPrimitivesForSAWCore.seq var__7 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__8 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__7) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + var__8 var__2) + ) (@SAWCoreScaffolding.recordHead "x"%string var__1 var__3 var__6))) + var__6) + (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 var__5 + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil var__5 + SAWCoreScaffolding.RecordNil)). diff --git a/otherTests/saw-core-rocq/test_records_13.vo.log.good b/otherTests/saw-core-rocq/test_records_13.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_14.v.good b/otherTests/saw-core-rocq/test_records_14.v.good new file mode 100644 index 0000000000..fa7bbb6af8 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_14.v.good @@ -0,0 +1,179 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_NestedField1: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + in + let var__4 + := + SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3 + in + let var__5 + := + CryptolPrimitivesForSAWCore.PEqSeqBool var__0 + in + let var__6 + := + SAWCoreScaffolding.RecordTypeCons "size"%string SAWCoreScaffolding.Integer + SAWCoreScaffolding.RecordTypeNil + in + let var__7 + := + (fun (u1305: Type) (Inh_u1305: SAWCoreScaffolding.Inhabited u1305) (_P: + CryptolPrimitivesForSAWCore.PLiteral u1305) + => + let var__8 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__9 + := + CryptolPrimitivesForSAWCore.seq var__8 Init.Datatypes.bool + in + let var__10 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__8 + in + @SAWCoreScaffolding.RecordCons "pt"%string var__4 + (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "x"%string var__9 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__9 var__10) + (@SAWCoreScaffolding.RecordCons "y"%string var__9 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + var__9 var__10) SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + u1305 _P) SAWCoreScaffolding.RecordNil) + ) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger + in + CryptolPrimitivesForSAWCore.ecEq + (SAWCoreScaffolding.RecordTypeCons "pt"%string var__4 var__6) + (CryptolPrimitivesForSAWCore.PEqRecord "pt"%string var__4 var__6 + (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__5 + (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil var__5 + CryptolPrimitivesForSAWCore.PEqEmpty)) + (CryptolPrimitivesForSAWCore.PEqRecord "size"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil + CryptolPrimitivesForSAWCore.PEqInteger + CryptolPrimitivesForSAWCore.PEqEmpty)) + (CryptolPrimitivesForSAWCore.updHeadRecord "pt"%string var__4 var__6 + (CryptolPrimitivesForSAWCore.const var__4 var__4 + ((fun (r: var__4) + => + let var__8 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__9 + := + CryptolPrimitivesForSAWCore.seq var__8 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__9 + var__3 + (CryptolPrimitivesForSAWCore.const var__9 var__9 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__9 var__2)) r + ) (@SAWCoreScaffolding.recordHead "pt"%string var__4 var__6 + var__7))) var__7) + (@SAWCoreScaffolding.RecordCons "pt"%string var__4 var__6 + (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2) SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "size"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + SAWCoreScaffolding.RecordNil)). diff --git a/otherTests/saw-core-rocq/test_records_14.vo.log.good b/otherTests/saw-core-rocq/test_records_14.vo.log.good new file mode 100644 index 0000000000..f157cb3221 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_14.vo.log.good @@ -0,0 +1,20 @@ +File "./test_records_14.v", line 106, characters 35-78: +Error: +In environment +var__0 := BinPos.Pos.to_nat (BinNums.xO (BinNums.xO (BinNums.xO BinNums.xH))) + : CryptolPrimitivesForSAWCore.Num +var__1 := CryptolPrimitivesForSAWCore.seq var__0 bool : Type +var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 : + CryptolPrimitivesForSAWCore.PLiteral + (CryptolPrimitivesForSAWCore.seq var__0 bool) +var__3 := RecordTypeCons "y" var__1 RecordTypeNil : Type +var__4 := RecordTypeCons "x" var__1 var__3 : Type +var__5 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 : + CryptolPrimitivesForSAWCore.PEq + (CryptolPrimitivesForSAWCore.seq var__0 bool) +var__6 := RecordTypeCons "size" Integer RecordTypeNil : Type +The term "CryptolPrimitivesForSAWCore.PLiteralInteger" has type + "CryptolPrimitivesForSAWCore.PLiteral Integer" +while it is expected to have type "Inhabited Integer". + +FAILED diff --git a/otherTests/saw-core-rocq/test_records_15.v.good b/otherTests/saw-core-rocq/test_records_15.v.good new file mode 100644 index 0000000000..7ef2796581 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_15.v.good @@ -0,0 +1,191 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_NestedField2: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + in + let var__4 + := + SAWCoreScaffolding.RecordTypeCons "x"%string var__1 var__3 + in + let var__5 + := + CryptolPrimitivesForSAWCore.PEqSeqBool var__0 + in + let var__6 + := + SAWCoreScaffolding.RecordTypeCons "size"%string SAWCoreScaffolding.Integer + SAWCoreScaffolding.RecordTypeNil + in + let var__7 + := + (fun (u1305: Type) (Inh_u1305: SAWCoreScaffolding.Inhabited u1305) (_P: + CryptolPrimitivesForSAWCore.PLiteral u1305) + => + let var__8 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__9 + := + CryptolPrimitivesForSAWCore.seq var__8 Init.Datatypes.bool + in + let var__10 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__8 + in + @SAWCoreScaffolding.RecordCons "pt"%string var__4 + (SAWCoreScaffolding.RecordTypeCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "x"%string var__9 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__9 var__10) + (@SAWCoreScaffolding.RecordCons "y"%string var__9 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + var__9 var__10) SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "size"%string u1305 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + u1305 _P) SAWCoreScaffolding.RecordNil) + ) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger + in + CryptolPrimitivesForSAWCore.ecEq + (SAWCoreScaffolding.RecordTypeCons "pt"%string var__4 var__6) + (CryptolPrimitivesForSAWCore.PEqRecord "pt"%string var__4 var__6 + (CryptolPrimitivesForSAWCore.PEqRecord "x"%string var__1 var__3 var__5 + (CryptolPrimitivesForSAWCore.PEqRecord "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil var__5 + CryptolPrimitivesForSAWCore.PEqEmpty)) + (CryptolPrimitivesForSAWCore.PEqRecord "size"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil + CryptolPrimitivesForSAWCore.PEqInteger + CryptolPrimitivesForSAWCore.PEqEmpty)) + (CryptolPrimitivesForSAWCore.updHeadRecord "pt"%string var__4 var__6 + (CryptolPrimitivesForSAWCore.const var__4 var__4 + ((fun (r: var__4) + => + let var__8 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__8 + var__3 + (CryptolPrimitivesForSAWCore.const var__8 var__8 + ((fun (x: var__8) + => + let var__9 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__10 + := + CryptolPrimitivesForSAWCore.seq var__9 + Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__10 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__9) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__10 var__2) + ) (@SAWCoreScaffolding.recordHead "x"%string var__8 var__3 + r))) r + ) (@SAWCoreScaffolding.recordHead "pt"%string var__4 var__6 + var__7))) var__7) + (@SAWCoreScaffolding.RecordCons "pt"%string var__4 var__6 + (@SAWCoreScaffolding.RecordCons "x"%string var__1 var__3 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))) + var__1 var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__1 var__2) SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "size"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + SAWCoreScaffolding.RecordNil)). diff --git a/otherTests/saw-core-rocq/test_records_15.vo.log.good b/otherTests/saw-core-rocq/test_records_15.vo.log.good new file mode 100644 index 0000000000..166ce9b52c --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_15.vo.log.good @@ -0,0 +1,20 @@ +File "./test_records_15.v", line 106, characters 35-78: +Error: +In environment +var__0 := BinPos.Pos.to_nat (BinNums.xO (BinNums.xO (BinNums.xO BinNums.xH))) + : CryptolPrimitivesForSAWCore.Num +var__1 := CryptolPrimitivesForSAWCore.seq var__0 bool : Type +var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 : + CryptolPrimitivesForSAWCore.PLiteral + (CryptolPrimitivesForSAWCore.seq var__0 bool) +var__3 := RecordTypeCons "y" var__1 RecordTypeNil : Type +var__4 := RecordTypeCons "x" var__1 var__3 : Type +var__5 := CryptolPrimitivesForSAWCore.PEqSeqBool var__0 : + CryptolPrimitivesForSAWCore.PEq + (CryptolPrimitivesForSAWCore.seq var__0 bool) +var__6 := RecordTypeCons "size" Integer RecordTypeNil : Type +The term "CryptolPrimitivesForSAWCore.PLiteralInteger" has type + "CryptolPrimitivesForSAWCore.PLiteral Integer" +while it is expected to have type "Inhabited Integer". + +FAILED diff --git a/otherTests/saw-core-rocq/test_records_2.v.good b/otherTests/saw-core-rocq/test_records_2.v.good new file mode 100644 index 0000000000..bc87d5e856 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_2.v.good @@ -0,0 +1,53 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Single: + SAWCoreScaffolding.RecordTypeCons "val"%string + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + @SAWCoreScaffolding.RecordCons "val"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + SAWCoreScaffolding.RecordNil. diff --git a/otherTests/saw-core-rocq/test_records_2.vo.log.good b/otherTests/saw-core-rocq/test_records_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_3.v.good b/otherTests/saw-core-rocq/test_records_3.v.good new file mode 100644 index 0000000000..bbd3ae8553 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_3.v.good @@ -0,0 +1,75 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Three: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + SAWCoreScaffolding.RecordTypeCons "a"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "b"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "c"%string var__0 + SAWCoreScaffolding.RecordTypeNil)) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + @SAWCoreScaffolding.RecordCons "a"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "b"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "c"%string var__1 + SAWCoreScaffolding.RecordTypeNil)) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "b"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "c"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "c"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil)). diff --git a/otherTests/saw-core-rocq/test_records_3.vo.log.good b/otherTests/saw-core-rocq/test_records_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_4.v.good b/otherTests/saw-core-rocq/test_records_4.v.good new file mode 100644 index 0000000000..b816fd1bd2 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_4.v.good @@ -0,0 +1,77 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_MixedWidth: + SAWCoreScaffolding.RecordTypeCons "x"%string + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "y"%string + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) SAWCoreScaffolding.RecordTypeNil) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + in + @SAWCoreScaffolding.RecordCons "x"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "y"%string + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + (@SAWCoreScaffolding.RecordCons "y"%string + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1)) + SAWCoreScaffolding.RecordNil). diff --git a/otherTests/saw-core-rocq/test_records_4.vo.log.good b/otherTests/saw-core-rocq/test_records_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_5.v.good b/otherTests/saw-core-rocq/test_records_5.v.good new file mode 100644 index 0000000000..be9c1506c2 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_5.v.good @@ -0,0 +1,81 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Nested: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + SAWCoreScaffolding.RecordTypeCons "inner"%string + (SAWCoreScaffolding.RecordTypeCons "x"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.RecordTypeCons "z"%string var__0 + SAWCoreScaffolding.RecordTypeNil) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + @SAWCoreScaffolding.RecordCons "inner"%string + (SAWCoreScaffolding.RecordTypeCons "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.RecordTypeCons "z"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "z"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil). diff --git a/otherTests/saw-core-rocq/test_records_5.vo.log.good b/otherTests/saw-core-rocq/test_records_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_6.v.good b/otherTests/saw-core-rocq/test_records_6.v.good new file mode 100644 index 0000000000..6eb3109812 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_6.v.good @@ -0,0 +1,74 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_ProjY: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + @SAWCoreScaffolding.recordHead "y"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (@SAWCoreScaffolding.recordTail "x"%string SAWCoreScaffolding.Integer + (SAWCoreScaffolding.RecordTypeCons "y"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "x"%string SAWCoreScaffolding.Integer + (SAWCoreScaffolding.RecordTypeCons "y"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (@SAWCoreScaffolding.RecordCons "y"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + SAWCoreScaffolding.RecordNil))). diff --git a/otherTests/saw-core-rocq/test_records_6.vo.log.good b/otherTests/saw-core-rocq/test_records_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_7.v.good b/otherTests/saw-core-rocq/test_records_7.v.good new file mode 100644 index 0000000000..ce9535e943 --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_7.v.good @@ -0,0 +1,83 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_NestedProj: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + @SAWCoreScaffolding.recordHead "x"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "y"%string SAWCoreScaffolding.Integer + SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.recordHead "inner"%string + (SAWCoreScaffolding.RecordTypeCons "x"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "y"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.RecordTypeCons "z"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "inner"%string + (SAWCoreScaffolding.RecordTypeCons "x"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "y"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil)) + (SAWCoreScaffolding.RecordTypeCons "z"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) + (@SAWCoreScaffolding.RecordCons "x"%string + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.RecordTypeCons "y"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + (@SAWCoreScaffolding.RecordCons "y"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + SAWCoreScaffolding.RecordNil)) + (@SAWCoreScaffolding.RecordCons "z"%string + SAWCoreScaffolding.Integer SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + SAWCoreScaffolding.RecordNil))). diff --git a/otherTests/saw-core-rocq/test_records_7.vo.log.good b/otherTests/saw-core-rocq/test_records_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_8.v.good b/otherTests/saw-core-rocq/test_records_8.v.good new file mode 100644 index 0000000000..5147b6816a --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_8.v.good @@ -0,0 +1,74 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Update1: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + SAWCoreScaffolding.RecordTypeCons "x"%string var__0 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__0 + SAWCoreScaffolding.RecordTypeNil) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + CryptolPrimitivesForSAWCore.updHeadRecord "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.const var__1 var__1 + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2)) + (@SAWCoreScaffolding.RecordCons "x"%string var__1 + (SAWCoreScaffolding.RecordTypeCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (@SAWCoreScaffolding.RecordCons "y"%string var__1 + SAWCoreScaffolding.RecordTypeNil + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.RecordNil)). diff --git a/otherTests/saw-core-rocq/test_records_8.vo.log.good b/otherTests/saw-core-rocq/test_records_8.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_records_9.v.good b/otherTests/saw-core-rocq/test_records_9.v.good new file mode 100644 index 0000000000..d60c67181b --- /dev/null +++ b/otherTests/saw-core-rocq/test_records_9.v.good @@ -0,0 +1,32 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestRec_Tuple: + SAWCoreScaffolding.PairType Init.Datatypes.bool + (SAWCoreScaffolding.PairType Init.Datatypes.bool + SAWCoreScaffolding.UnitType) := + SAWCoreScaffolding.PairValue Init.Datatypes.bool + (SAWCoreScaffolding.PairType Init.Datatypes.bool + SAWCoreScaffolding.UnitType) Init.Datatypes.true + (SAWCoreScaffolding.PairValue Init.Datatypes.bool + SAWCoreScaffolding.UnitType Init.Datatypes.true + SAWCoreScaffolding.Unit). diff --git a/otherTests/saw-core-rocq/test_records_9.vo.log.good b/otherTests/saw-core-rocq/test_records_9.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences.log.good b/otherTests/saw-core-rocq/test_sequences.log.good index 61d88c4ed5..99f550570f 100644 --- a/otherTests/saw-core-rocq/test_sequences.log.good +++ b/otherTests/saw-core-rocq/test_sequences.log.good @@ -1,682 +1 @@ Loading file "test_sequences.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Single : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Empty : SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - []. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Eight : SAWCoreVectorsAsRocqVectors.Vec (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Take3 : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecTake var__4 var__3 var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__4 var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_TakeAll : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - CryptolPrimitivesForSAWCore.ecTake var__3 (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_TakeZero : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecTake (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__3 var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Drop : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecDrop var__3 var__4 var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__4 var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_DropAll : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecDrop var__3 (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_DropZero : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecDrop (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__3 var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_TakeDrop : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - let var__5 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecTake var__4 var__0 var__2 (CryptolPrimitivesForSAWCore.ecDrop var__0 var__5 var__2 [CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__5 var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__2 var__3]). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Update : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecUpdate var__0 var__2 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3] (CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__2 var__3). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_UpdateFirst : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - CryptolPrimitivesForSAWCore.ecUpdate var__0 var__2 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3] (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__2 var__3). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_UpdateLast : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecUpdate var__0 var__2 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3] (CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) var__2 var__3). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_UpdateMult : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__3 := CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool in - let var__4 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2 in - CryptolPrimitivesForSAWCore.ecUpdate var__1 var__3 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger (CryptolPrimitivesForSAWCore.ecUpdate var__1 var__3 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger [CryptolPrimitivesForSAWCore.ecNumber var__0 var__3 var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__3 var__4; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__3 var__4; CryptolPrimitivesForSAWCore.ecNumber var__1 var__3 var__4] (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) var__3 var__4)) (CryptolPrimitivesForSAWCore.ecNumber var__0 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) var__3 var__4). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - -Definition zip (n : CryptolPrimitivesForSAWCore.Num) (a : Type) {Inh_a : SAWCoreScaffolding.Inhabited a} (b : Type) {Inh_b : SAWCoreScaffolding.Inhabited b} (xs : CryptolPrimitivesForSAWCore.seq n a) (ys : CryptolPrimitivesForSAWCore.seq n b) : CryptolPrimitivesForSAWCore.seq n (SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := - let var__0 := SAWCoreScaffolding.PairType a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) in - CryptolPrimitivesForSAWCore.seqMap var__0 var__0 n (SAWCorePrelude.uncurry a b var__0 (fun (x : a) (y : b) => SAWCoreScaffolding.PairValue a (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y SAWCoreScaffolding.Unit))) (CryptolPrimitivesForSAWCore.seqZipSame a b n xs ys). - - - -Definition TestSeq_Zip : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (SAWCoreScaffolding.PairType var__0 (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - zip var__3 var__1 var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2] [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - -Definition map (n : CryptolPrimitivesForSAWCore.Num) (a : Type) {Inh_a : SAWCoreScaffolding.Inhabited a} (b : Type) {Inh_b : SAWCoreScaffolding.Inhabited b} (f : forall (_1 : a), b) (xs : CryptolPrimitivesForSAWCore.seq n a) : CryptolPrimitivesForSAWCore.seq n b := - CryptolPrimitivesForSAWCore.seqMap a b n (fun (x : a) => f x) xs. - - - -Definition TestSeq_Map : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) in - map var__3 var__1 var__1 (fun (x : var__1) => let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__5 := CryptolPrimitivesForSAWCore.seq var__4 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__5 (CryptolPrimitivesForSAWCore.PRingSeqBool var__4) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__5 var__2)) [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Fold : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - CryptolPrimitivesForSAWCore.ecFoldl var__0 var__2 var__2 (CryptolPrimitivesForSAWCore.ecPlus var__2 (CryptolPrimitivesForSAWCore.PRingSeqBool var__1)) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__2 var__3) [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Concat : let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.tcAdd var__0 var__0) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecCat var__3 var__3 var__1 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2] [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Comprehension : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - CryptolPrimitivesForSAWCore.seqMap var__2 var__2 var__0 (fun (x : var__2) => let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__5 := CryptolPrimitivesForSAWCore.seq var__4 Init.Datatypes.bool in - CryptolPrimitivesForSAWCore.ecPlus var__5 (CryptolPrimitivesForSAWCore.PRingSeqBool var__4) x (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__5 var__3)) [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Reverse : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - CryptolPrimitivesForSAWCore.ecReverse var__0 var__2 [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Transpose : let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.seq var__0 (CryptolPrimitivesForSAWCore.seq var__0 (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool)) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecTranspose var__3 var__3 var__1 [[CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2]; [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 var__2]]. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestSeq_Index : CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool in - let var__3 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 in - let var__4 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) in - CryptolPrimitivesForSAWCore.ecAt var__0 var__2 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger [CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 var__3; CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3] (CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger). - diff --git a/otherTests/saw-core-rocq/test_sequences.saw b/otherTests/saw-core-rocq/test_sequences.saw index e75deb2015..89c8ad2767 100644 --- a/otherTests/saw-core-rocq/test_sequences.saw +++ b/otherTests/saw-core-rocq/test_sequences.saw @@ -1,69 +1,69 @@ // Test: Sequence operations. let t1 = {{ [1, 2, 3, 255] : [4][8] }}; -write_rocq_term "TestSeq" [] [] "" t1; +write_rocq_term "TestSeq" [] [] "test_sequences_1.v" t1; let t2 = {{ [255] : [1][8] }}; -write_rocq_term "TestSeq_Single" [] [] "" t2; +write_rocq_term "TestSeq_Single" [] [] "test_sequences_2.v" t2; let t3 = {{ [] : [0][8] }}; -write_rocq_term "TestSeq_Empty" [] [] "" t3; +write_rocq_term "TestSeq_Empty" [] [] "test_sequences_3.v" t3; let t4 = {{ [1, 2, 3, 4, 5, 6, 7, 8] : [8][16] }}; -write_rocq_term "TestSeq_Eight" [] [] "" t4; +write_rocq_term "TestSeq_Eight" [] [] "test_sequences_4.v" t4; let t5 = {{ take`{3} ([1, 2, 3, 4, 5] : [5][8]) }}; -write_rocq_term "TestSeq_Take3" [] [] "" t5; +write_rocq_term "TestSeq_Take3" [] [] "test_sequences_5.v" t5; let t6 = {{ take`{5} ([1, 2, 3, 4, 5] : [5][8]) }}; -write_rocq_term "TestSeq_TakeAll" [] [] "" t6; +write_rocq_term "TestSeq_TakeAll" [] [] "test_sequences_6.v" t6; let t7 = {{ take`{0} ([1, 2, 3] : [3][8]) }}; -write_rocq_term "TestSeq_TakeZero" [] [] "" t7; +write_rocq_term "TestSeq_TakeZero" [] [] "test_sequences_7.v" t7; let t8 = {{ drop`{2} ([1, 2, 3, 4, 5] : [5][8]) }}; -write_rocq_term "TestSeq_Drop" [] [] "" t8; +write_rocq_term "TestSeq_Drop" [] [] "test_sequences_8.v" t8; let t9 = {{ drop`{3} ([1, 2, 3] : [3][8]) }}; -write_rocq_term "TestSeq_DropAll" [] [] "" t9; +write_rocq_term "TestSeq_DropAll" [] [] "test_sequences_9.v" t9; let t10 = {{ drop`{0} ([1, 2, 3] : [3][8]) }}; -write_rocq_term "TestSeq_DropZero" [] [] "" t10; +write_rocq_term "TestSeq_DropZero" [] [] "test_sequences_10.v" t10; let t11 = {{ take`{2} (drop`{1} ([1, 2, 3, 4] : [4][8])) }}; -write_rocq_term "TestSeq_TakeDrop" [] [] "" t11; +write_rocq_term "TestSeq_TakeDrop" [] [] "test_sequences_11.v" t11; let t12 = {{ update ([1, 2, 3, 4] : [4][8]) 2 99 }}; -write_rocq_term "TestSeq_Update" [] [] "" t12; +write_rocq_term "TestSeq_Update" [] [] "test_sequences_12.v" t12; let t13 = {{ update ([1, 2, 3, 4] : [4][8]) 0 99 }}; -write_rocq_term "TestSeq_UpdateFirst" [] [] "" t13; +write_rocq_term "TestSeq_UpdateFirst" [] [] "test_sequences_13.v" t13; let t14 = {{ update ([1, 2, 3, 4] : [4][8]) 3 99 }}; -write_rocq_term "TestSeq_UpdateLast" [] [] "" t14; +write_rocq_term "TestSeq_UpdateLast" [] [] "test_sequences_14.v" t14; let t15 = {{ update (update ([1, 2, 3, 4] : [4][8]) 0 10) 1 20 }}; -write_rocq_term "TestSeq_UpdateMult" [] [] "" t15; +write_rocq_term "TestSeq_UpdateMult" [] [] "test_sequences_15.v" t15; let t16 = {{ zip ([1, 2, 3] : [3][8]) ([4, 5, 6] : [3][8]) }}; -write_rocq_term "TestSeq_Zip" [] [] "" t16; +write_rocq_term "TestSeq_Zip" [] [] "test_sequences_16.v" t16; let t17 = {{ map (\(x : [8]) -> x + 1) ([1, 2, 3] : [3][8]) }}; -write_rocq_term "TestSeq_Map" [] [] "" t17; +write_rocq_term "TestSeq_Map" [] [] "test_sequences_17.v" t17; let t18 = {{ foldl (+) (0 : [16]) ([1, 2, 3, 4] : [4][16]) }}; -write_rocq_term "TestSeq_Fold" [] [] "" t18; +write_rocq_term "TestSeq_Fold" [] [] "test_sequences_18.v" t18; let t19 = {{ [1, 2] # [3, 4] : [4][8] }}; -write_rocq_term "TestSeq_Concat" [] [] "" t19; +write_rocq_term "TestSeq_Concat" [] [] "test_sequences_19.v" t19; let t20 = {{ [ x + 1 | x <- [1, 2, 3, 4] ] : [4][8] }}; -write_rocq_term "TestSeq_Comprehension" [] [] "" t20; +write_rocq_term "TestSeq_Comprehension" [] [] "test_sequences_20.v" t20; let t21 = {{ reverse ([1, 2, 3, 4] : [4][8]) }}; -write_rocq_term "TestSeq_Reverse" [] [] "" t21; +write_rocq_term "TestSeq_Reverse" [] [] "test_sequences_21.v" t21; let t22 = {{ transpose [[1, 2], [3, 4]] : [2][2][8] }}; -write_rocq_term "TestSeq_Transpose" [] [] "" t22; +write_rocq_term "TestSeq_Transpose" [] [] "test_sequences_22.v" t22; let t23 = {{ [1, 2, 3, 4] @ 2 : [8] }}; -write_rocq_term "TestSeq_Index" [] [] "" t23; +write_rocq_term "TestSeq_Index" [] [] "test_sequences_23.v" t23; diff --git a/otherTests/saw-core-rocq/test_sequences_1.v.good b/otherTests/saw-core-rocq/test_sequences_1.v.good new file mode 100644 index 0000000000..f96c7555dd --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_1.v.good @@ -0,0 +1,77 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_1.vo.log.good b/otherTests/saw-core-rocq/test_sequences_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_10.v.good b/otherTests/saw-core-rocq/test_sequences_10.v.good new file mode 100644 index 0000000000..1b610fd4f5 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_10.v.good @@ -0,0 +1,70 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_DropZero: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecDrop + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__3 var__1 + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_10.vo.log.good b/otherTests/saw-core-rocq/test_sequences_10.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_11.v.good b/otherTests/saw-core-rocq/test_sequences_11.v.good new file mode 100644 index 0000000000..adb9d30618 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_11.v.good @@ -0,0 +1,79 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_TakeDrop: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + let var__5 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecTake var__4 var__0 var__2 + (CryptolPrimitivesForSAWCore.ecDrop var__0 var__5 var__2 [ + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3; + CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; + CryptolPrimitivesForSAWCore.ecNumber var__5 var__2 var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + var__2 var__3 + ]). diff --git a/otherTests/saw-core-rocq/test_sequences_11.vo.log.good b/otherTests/saw-core-rocq/test_sequences_11.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_12.v.good b/otherTests/saw-core-rocq/test_sequences_12.v.good new file mode 100644 index 0000000000..4c45eb418f --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_12.v.good @@ -0,0 +1,89 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Update: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecUpdate var__0 var__2 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PIntegralInteger [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ] (CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__2 var__3). diff --git a/otherTests/saw-core-rocq/test_sequences_12.vo.log.good b/otherTests/saw-core-rocq/test_sequences_12.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_13.v.good b/otherTests/saw-core-rocq/test_sequences_13.v.good new file mode 100644 index 0000000000..9e730eb67f --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_13.v.good @@ -0,0 +1,88 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_UpdateFirst: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + CryptolPrimitivesForSAWCore.ecUpdate var__0 var__2 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PIntegralInteger [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ] (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) + SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__2 var__3). diff --git a/otherTests/saw-core-rocq/test_sequences_13.vo.log.good b/otherTests/saw-core-rocq/test_sequences_13.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_14.v.good b/otherTests/saw-core-rocq/test_sequences_14.v.good new file mode 100644 index 0000000000..8e6e84cf23 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_14.v.good @@ -0,0 +1,89 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_UpdateLast: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecUpdate var__0 var__2 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PIntegralInteger [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ] (CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))))))) + var__2 var__3). diff --git a/otherTests/saw-core-rocq/test_sequences_14.vo.log.good b/otherTests/saw-core-rocq/test_sequences_14.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_15.v.good b/otherTests/saw-core-rocq/test_sequences_15.v.good new file mode 100644 index 0000000000..9f7a20c8fe --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_15.v.good @@ -0,0 +1,101 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_UpdateMult: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__3 + := + CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool + in + let var__4 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2 + in + CryptolPrimitivesForSAWCore.ecUpdate var__1 var__3 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PIntegralInteger + (CryptolPrimitivesForSAWCore.ecUpdate var__1 var__3 + SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PIntegralInteger + [ + CryptolPrimitivesForSAWCore.ecNumber var__0 var__3 var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__3 + var__4; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__3 + var__4; + CryptolPrimitivesForSAWCore.ecNumber var__1 var__3 var__4 + ] (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__3 var__4)) + (CryptolPrimitivesForSAWCore.ecNumber var__0 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + var__3 var__4). diff --git a/otherTests/saw-core-rocq/test_sequences_15.vo.log.good b/otherTests/saw-core-rocq/test_sequences_15.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_16.v.good b/otherTests/saw-core-rocq/test_sequences_16.v.good new file mode 100644 index 0000000000..285be3236d --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_16.v.good @@ -0,0 +1,116 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + +Definition zip + (n: CryptolPrimitivesForSAWCore.Num) + (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) + {Inh_b: SAWCoreScaffolding.Inhabited b} + (xs: CryptolPrimitivesForSAWCore.seq n a) + (ys: CryptolPrimitivesForSAWCore.seq n b) + : CryptolPrimitivesForSAWCore.seq n + (SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType)) := + let var__0 + := + SAWCoreScaffolding.PairType a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) + in + CryptolPrimitivesForSAWCore.seqMap var__0 var__0 n + (SAWCorePrelude.uncurry a b var__0 (fun (x: a) (y: b) + => + SAWCoreScaffolding.PairValue a + (SAWCoreScaffolding.PairType b SAWCoreScaffolding.UnitType) x + (SAWCoreScaffolding.PairValue b SAWCoreScaffolding.UnitType y + SAWCoreScaffolding.Unit) + )) (CryptolPrimitivesForSAWCore.seqZipSame a b n xs ys). + + + +Definition TestSeq_Zip: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (SAWCoreScaffolding.PairType var__0 + (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + zip var__3 var__1 var__1 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ] [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_16.vo.log.good b/otherTests/saw-core-rocq/test_sequences_16.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_17.v.good b/otherTests/saw-core-rocq/test_sequences_17.v.good new file mode 100644 index 0000000000..a61c96eacf --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_17.v.good @@ -0,0 +1,99 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + +Definition map + (n: CryptolPrimitivesForSAWCore.Num) + (a: Type) + {Inh_a: SAWCoreScaffolding.Inhabited a} + (b: Type) + {Inh_b: SAWCoreScaffolding.Inhabited b} + (f: forall (_1: a), b) + (xs: CryptolPrimitivesForSAWCore.seq n a) + : CryptolPrimitivesForSAWCore.seq n b := + CryptolPrimitivesForSAWCore.seqMap a b n (fun (x: a) => f x) xs. + + + +Definition TestSeq_Map: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + map var__3 var__1 var__1 (fun (x: var__1) + => + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__5 + := + CryptolPrimitivesForSAWCore.seq var__4 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__5 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__4) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__5 var__2) + ) [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_17.vo.log.good b/otherTests/saw-core-rocq/test_sequences_17.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_18.v.good b/otherTests/saw-core-rocq/test_sequences_18.v.good new file mode 100644 index 0000000000..1a949547d0 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_18.v.good @@ -0,0 +1,77 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Fold: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + CryptolPrimitivesForSAWCore.ecFoldl var__0 var__2 var__2 + (CryptolPrimitivesForSAWCore.ecPlus var__2 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__1)) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__2 + var__3) [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_18.vo.log.good b/otherTests/saw-core-rocq/test_sequences_18.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_19.v.good b/otherTests/saw-core-rocq/test_sequences_19.v.good new file mode 100644 index 0000000000..129f439eef --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_19.v.good @@ -0,0 +1,78 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Concat: let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.tcAdd var__0 var__0) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecCat var__3 var__3 var__1 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ] [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_19.vo.log.good b/otherTests/saw-core-rocq/test_sequences_19.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_2.v.good b/otherTests/saw-core-rocq/test_sequences_2.v.good new file mode 100644 index 0000000000..76e4bc8d90 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_2.v.good @@ -0,0 +1,57 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Single: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_2.vo.log.good b/otherTests/saw-core-rocq/test_sequences_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_20.v.good b/otherTests/saw-core-rocq/test_sequences_20.v.good new file mode 100644 index 0000000000..7dbf7982e0 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_20.v.good @@ -0,0 +1,95 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Comprehension: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + CryptolPrimitivesForSAWCore.seqMap var__2 var__2 var__0 (fun (x: var__2) + => + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__5 + := + CryptolPrimitivesForSAWCore.seq var__4 Init.Datatypes.bool + in + CryptolPrimitivesForSAWCore.ecPlus var__5 + (CryptolPrimitivesForSAWCore.PRingSeqBool var__4) x + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__5 var__3) + ) [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_20.vo.log.good b/otherTests/saw-core-rocq/test_sequences_20.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_21.v.good b/otherTests/saw-core-rocq/test_sequences_21.v.good new file mode 100644 index 0000000000..cb72c8b08e --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_21.v.good @@ -0,0 +1,75 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Reverse: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + CryptolPrimitivesForSAWCore.ecReverse var__0 var__2 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_21.vo.log.good b/otherTests/saw-core-rocq/test_sequences_21.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_22.v.good b/otherTests/saw-core-rocq/test_sequences_22.v.good new file mode 100644 index 0000000000..da4337b8a1 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_22.v.good @@ -0,0 +1,81 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Transpose: let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.seq var__0 + (CryptolPrimitivesForSAWCore.seq var__0 + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool)) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecTranspose var__3 var__3 var__1 [ + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ]; + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + var__1 var__2 + ] + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_22.vo.log.good b/otherTests/saw-core-rocq/test_sequences_22.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_23.v.good b/otherTests/saw-core-rocq/test_sequences_23.v.good new file mode 100644 index 0000000000..67d39e1b63 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_23.v.good @@ -0,0 +1,74 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Index: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool + in + let var__3 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1 + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecAt var__0 var__2 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PIntegralInteger [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__4 var__2 var__3; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__2 + var__3; + CryptolPrimitivesForSAWCore.ecNumber var__0 var__2 var__3 + ] (CryptolPrimitivesForSAWCore.ecNumber var__4 SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger). diff --git a/otherTests/saw-core-rocq/test_sequences_23.vo.log.good b/otherTests/saw-core-rocq/test_sequences_23.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_3.v.good b/otherTests/saw-core-rocq/test_sequences_3.v.good new file mode 100644 index 0000000000..1f9cd634d8 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_3.v.good @@ -0,0 +1,34 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Empty: + SAWCoreVectorsAsRocqVectors.Vec SAWCoreScaffolding.Zero + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + [ + + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_3.vo.log.good b/otherTests/saw-core-rocq/test_sequences_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_4.v.good b/otherTests/saw-core-rocq/test_sequences_4.v.good new file mode 100644 index 0000000000..9b5822d544 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_4.v.good @@ -0,0 +1,100 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Eight: + SAWCoreVectorsAsRocqVectors.Vec + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_4.vo.log.good b/otherTests/saw-core-rocq/test_sequences_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_5.v.good b/otherTests/saw-core-rocq/test_sequences_5.v.good new file mode 100644 index 0000000000..960e7c22c2 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_5.v.good @@ -0,0 +1,82 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Take3: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecTake var__4 var__3 var__1 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber var__4 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_5.vo.log.good b/otherTests/saw-core-rocq/test_sequences_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_6.v.good b/otherTests/saw-core-rocq/test_sequences_6.v.good new file mode 100644 index 0000000000..fd5feebac9 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_6.v.good @@ -0,0 +1,82 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_TakeAll: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + in + CryptolPrimitivesForSAWCore.ecTake var__3 + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_6.vo.log.good b/otherTests/saw-core-rocq/test_sequences_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_7.v.good b/otherTests/saw-core-rocq/test_sequences_7.v.good new file mode 100644 index 0000000000..ca8be98e46 --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_7.v.good @@ -0,0 +1,68 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_TakeZero: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecTake + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__3 var__1 + [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_7.vo.log.good b/otherTests/saw-core-rocq/test_sequences_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_8.v.good b/otherTests/saw-core-rocq/test_sequences_8.v.good new file mode 100644 index 0000000000..8895f0a54b --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_8.v.good @@ -0,0 +1,82 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_Drop: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)) + in + let var__4 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecDrop var__3 var__4 var__1 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber var__4 var__1 var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) var__1 + var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_8.vo.log.good b/otherTests/saw-core-rocq/test_sequences_8.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_sequences_9.v.good b/otherTests/saw-core-rocq/test_sequences_9.v.good new file mode 100644 index 0000000000..dcf8aee05d --- /dev/null +++ b/otherTests/saw-core-rocq/test_sequences_9.v.good @@ -0,0 +1,67 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestSeq_DropAll: + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH)) + in + CryptolPrimitivesForSAWCore.ecDrop var__3 + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) var__1 [ + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2; + CryptolPrimitivesForSAWCore.ecNumber var__3 var__1 var__2 + ]. diff --git a/otherTests/saw-core-rocq/test_sequences_9.vo.log.good b/otherTests/saw-core-rocq/test_sequences_9.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples.log.good b/otherTests/saw-core-rocq/test_tuples.log.good index 89e40ad5ea..48eec03a49 100644 --- a/otherTests/saw-core-rocq/test_tuples.log.good +++ b/otherTests/saw-core-rocq/test_tuples.log.good @@ -1,200 +1 @@ Loading file "test_tuples.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_Pair : SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) Init.Datatypes.bool) SAWCoreScaffolding.UnitType) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) in - SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) SAWCoreScaffolding.UnitType) (CryptolPrimitivesForSAWCore.ecNumber var__0 (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1)) (SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) SAWCoreScaffolding.UnitType (CryptolPrimitivesForSAWCore.ecNumber var__0 (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) SAWCoreScaffolding.Unit). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_Triple : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - SAWCoreScaffolding.PairType var__0 (SAWCoreScaffolding.PairType var__0 (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) in - SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.UnitType)) var__1 (SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.UnitType) var__1 (SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) SAWCoreScaffolding.UnitType var__1 SAWCoreScaffolding.Unit)). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_Fourple : SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool) SAWCoreScaffolding.UnitType))) := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__2 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__3 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xI (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) SAWCoreScaffolding.UnitType))) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) (SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) SAWCoreScaffolding.UnitType)) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1)) (SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) (SAWCoreScaffolding.PairType (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) SAWCoreScaffolding.UnitType) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) (SAWCoreScaffolding.PairValue (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) SAWCoreScaffolding.UnitType (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__3)) SAWCoreScaffolding.Unit))). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_Nested : let var__0 := CryptolPrimitivesForSAWCore.seq (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) Init.Datatypes.bool in - let var__1 := SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType in - SAWCoreScaffolding.PairType (SAWCoreScaffolding.PairType var__0 var__1) var__1 := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 in - SAWCoreScaffolding.PairValue (SAWCoreScaffolding.PairType var__1 (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType)) (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue var__1 (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 var__2) (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.Unit)) (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 var__2) SAWCoreScaffolding.Unit). - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_Fst : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) in - CryptolPrimitivesForSAWCore.ecEq var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) (SAWCorePrelude.Pair_fst var__1 (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue var__1 (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer SAWCoreScaffolding.UnitType) var__2 (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer SAWCoreScaffolding.UnitType (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) SAWCoreScaffolding.Unit))) var__2. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_Snd : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) in - CryptolPrimitivesForSAWCore.ecEq var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) (SAWCorePrelude.Pair_fst var__1 SAWCoreScaffolding.UnitType (SAWCorePrelude.Pair_snd SAWCoreScaffolding.Integer (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType var__2 SAWCoreScaffolding.Unit)))) var__2. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTuple_NestedProj : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) in - let var__1 := CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool in - let var__2 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) in - CryptolPrimitivesForSAWCore.ecEq var__1 (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) (SAWCorePrelude.Pair_fst var__1 SAWCoreScaffolding.UnitType (SAWCorePrelude.Pair_snd SAWCoreScaffolding.Integer (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) (SAWCorePrelude.Pair_fst (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType)) (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType)) (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer SAWCoreScaffolding.UnitType) (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType var__2 SAWCoreScaffolding.Unit)) (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer SAWCoreScaffolding.UnitType (CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger) SAWCoreScaffolding.Unit))))) var__2. - diff --git a/otherTests/saw-core-rocq/test_tuples.saw b/otherTests/saw-core-rocq/test_tuples.saw index 259c2f059a..e67511d9de 100644 --- a/otherTests/saw-core-rocq/test_tuples.saw +++ b/otherTests/saw-core-rocq/test_tuples.saw @@ -1,21 +1,21 @@ // Test: Tuples. let t1 = {{ (0, 0) : ([8], [16]) }}; -write_rocq_term "TestTuple_Pair" [] [] "" t1; +write_rocq_term "TestTuple_Pair" [] [] "test_tuples_1.v" t1; let t2 = {{ (255, 255, 255) : ([8], [8], [8]) }}; -write_rocq_term "TestTuple_Triple" [] [] "" t2; +write_rocq_term "TestTuple_Triple" [] [] "test_tuples_2.v" t2; let t3 = {{ (1, 2, 3, 4) : ([8], [9], [10], [11]) }}; -write_rocq_term "TestTuple_Fourple" [] [] "" t3; +write_rocq_term "TestTuple_Fourple" [] [] "test_tuples_3.v" t3; let t4 = {{ ((1, 2), 3) : (([8], [8]), [8]) }}; -write_rocq_term "TestTuple_Nested" [] [] "" t4; +write_rocq_term "TestTuple_Nested" [] [] "test_tuples_4.v" t4; let t5 = {{ ((1, 2).0 : [8]) == 1 }}; -write_rocq_term "TestTuple_Fst" [] [] "" t5; +write_rocq_term "TestTuple_Fst" [] [] "test_tuples_5.v" t5; let t6 = {{ ((1, 2).1 : [8]) == 2 }}; -write_rocq_term "TestTuple_Snd" [] [] "" t6; +write_rocq_term "TestTuple_Snd" [] [] "test_tuples_6.v" t6; let t7 = {{ (((1, 2), 3).0.1 : [8]) == 2 }}; -write_rocq_term "TestTuple_NestedProj" [] [] "" t7; +write_rocq_term "TestTuple_NestedProj" [] [] "test_tuples_7.v" t7; diff --git a/otherTests/saw-core-rocq/test_tuples_1.v.good b/otherTests/saw-core-rocq/test_tuples_1.v.good new file mode 100644 index 0000000000..b548cd77dc --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_1.v.good @@ -0,0 +1,76 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_Pair: + SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))))) + Init.Datatypes.bool) SAWCoreScaffolding.UnitType) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + in + SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType) + (CryptolPrimitivesForSAWCore.ecNumber var__0 + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1)) + (SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType + (CryptolPrimitivesForSAWCore.ecNumber var__0 + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) + SAWCoreScaffolding.Unit). diff --git a/otherTests/saw-core-rocq/test_tuples_1.vo.log.good b/otherTests/saw-core-rocq/test_tuples_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples_2.v.good b/otherTests/saw-core-rocq/test_tuples_2.v.good new file mode 100644 index 0000000000..b5fd1106a0 --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_2.v.good @@ -0,0 +1,73 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_Triple: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + SAWCoreScaffolding.PairType var__0 + (SAWCoreScaffolding.PairType var__0 + (SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType)) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))))))))) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) + in + SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType)) var__1 + (SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType) var__1 + (SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType var__1 SAWCoreScaffolding.Unit)). diff --git a/otherTests/saw-core-rocq/test_tuples_2.vo.log.good b/otherTests/saw-core-rocq/test_tuples_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples_3.v.good b/otherTests/saw-core-rocq/test_tuples_3.v.good new file mode 100644 index 0000000000..2e1a111850 --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_3.v.good @@ -0,0 +1,136 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_Fourple: + SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool) SAWCoreScaffolding.UnitType))) := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__2 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__3 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xI + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType))) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + (CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0)) + (SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType)) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq var__1 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__1)) + (SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + (SAWCoreScaffolding.PairType + (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + (CryptolPrimitivesForSAWCore.seq var__2 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__2)) + (SAWCoreScaffolding.PairValue + (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) + SAWCoreScaffolding.UnitType + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + (CryptolPrimitivesForSAWCore.seq var__3 Init.Datatypes.bool) + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__3)) + SAWCoreScaffolding.Unit))). diff --git a/otherTests/saw-core-rocq/test_tuples_3.vo.log.good b/otherTests/saw-core-rocq/test_tuples_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples_4.v.good b/otherTests/saw-core-rocq/test_tuples_4.v.good new file mode 100644 index 0000000000..286693d880 --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_4.v.good @@ -0,0 +1,76 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_Nested: let var__0 + := + CryptolPrimitivesForSAWCore.seq + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))))) + Init.Datatypes.bool + in + let var__1 + := + SAWCoreScaffolding.PairType var__0 SAWCoreScaffolding.UnitType + in + SAWCoreScaffolding.PairType (SAWCoreScaffolding.PairType var__0 var__1) + var__1 := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0 + in + SAWCoreScaffolding.PairValue + (SAWCoreScaffolding.PairType var__1 + (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType)) + (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue var__1 + (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + var__2) + (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.Unit)) + (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) var__1 + var__2) SAWCoreScaffolding.Unit). diff --git a/otherTests/saw-core-rocq/test_tuples_4.vo.log.good b/otherTests/saw-core-rocq/test_tuples_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples_5.v.good b/otherTests/saw-core-rocq/test_tuples_5.v.good new file mode 100644 index 0000000000..fbb06e3122 --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_5.v.good @@ -0,0 +1,59 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_Fst: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) + in + CryptolPrimitivesForSAWCore.ecEq var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) + (SAWCorePrelude.Pair_fst var__1 + (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue var__1 + (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer + SAWCoreScaffolding.UnitType) var__2 + (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer + SAWCoreScaffolding.UnitType + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + SAWCoreScaffolding.Unit))) var__2. diff --git a/otherTests/saw-core-rocq/test_tuples_5.vo.log.good b/otherTests/saw-core-rocq/test_tuples_5.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples_6.v.good b/otherTests/saw-core-rocq/test_tuples_6.v.good new file mode 100644 index 0000000000..510daf5733 --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_6.v.good @@ -0,0 +1,57 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_Snd: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) + in + CryptolPrimitivesForSAWCore.ecEq var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) + (SAWCorePrelude.Pair_fst var__1 SAWCoreScaffolding.UnitType + (SAWCorePrelude.Pair_snd SAWCoreScaffolding.Integer + (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer + (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (SAWCoreScaffolding.PairValue var__1 SAWCoreScaffolding.UnitType + var__2 SAWCoreScaffolding.Unit)))) var__2. diff --git a/otherTests/saw-core-rocq/test_tuples_6.vo.log.good b/otherTests/saw-core-rocq/test_tuples_6.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_tuples_7.v.good b/otherTests/saw-core-rocq/test_tuples_7.v.good new file mode 100644 index 0000000000..4854228100 --- /dev/null +++ b/otherTests/saw-core-rocq/test_tuples_7.v.good @@ -0,0 +1,80 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTuple_NestedProj: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + in + let var__1 + := + CryptolPrimitivesForSAWCore.seq var__0 Init.Datatypes.bool + in + let var__2 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH))) var__1 + (CryptolPrimitivesForSAWCore.PLiteralSeqBool var__0) + in + CryptolPrimitivesForSAWCore.ecEq var__1 + (CryptolPrimitivesForSAWCore.PEqSeqBool var__0) + (SAWCorePrelude.Pair_fst var__1 SAWCoreScaffolding.UnitType + (SAWCorePrelude.Pair_snd SAWCoreScaffolding.Integer + (SAWCoreScaffolding.PairType var__1 SAWCoreScaffolding.UnitType) + (SAWCorePrelude.Pair_fst + (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer + (SAWCoreScaffolding.PairType var__1 + SAWCoreScaffolding.UnitType)) + (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue + (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer + (SAWCoreScaffolding.PairType var__1 + SAWCoreScaffolding.UnitType)) + (SAWCoreScaffolding.PairType SAWCoreScaffolding.Integer + SAWCoreScaffolding.UnitType) + (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer + (SAWCoreScaffolding.PairType var__1 + SAWCoreScaffolding.UnitType) + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat Stdlib.PArith.BinPos.xH)) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + (SAWCoreScaffolding.PairValue var__1 + SAWCoreScaffolding.UnitType var__2 + SAWCoreScaffolding.Unit)) + (SAWCoreScaffolding.PairValue SAWCoreScaffolding.Integer + SAWCoreScaffolding.UnitType + (CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PLiteralInteger) + SAWCoreScaffolding.Unit))))) var__2. diff --git a/otherTests/saw-core-rocq/test_tuples_7.vo.log.good b/otherTests/saw-core-rocq/test_tuples_7.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_typelevel.log.good b/otherTests/saw-core-rocq/test_typelevel.log.good index 7fba7ee389..3cab9c1504 100644 --- a/otherTests/saw-core-rocq/test_typelevel.log.good +++ b/otherTests/saw-core-rocq/test_typelevel.log.good @@ -1,103 +1 @@ Loading file "test_typelevel.saw" - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTypelvl_MaxWidth : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xO (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger in - CryptolPrimitivesForSAWCore.ecEq SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PEqInteger var__0 var__0. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTypelvl_MinWidth : Init.Datatypes.bool := - let var__0 := CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum (Stdlib.PArith.BinPos.Pos.to_nat (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger in - CryptolPrimitivesForSAWCore.ecEq SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PEqInteger var__0 var__0. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTypelvl_Arith1 (u1293 : Type) {Inh_u1293 : SAWCoreScaffolding.Inhabited u1293} (_P : CryptolPrimitivesForSAWCore.PLiteral u1293) : u1293 := - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) u1293 _P. - - -(** Mandatory imports from saw-core-rocq *) -From Stdlib Require Import Lists.List. -From Stdlib Require Import String. -#[local] Set Warnings "-stdlib-vector". -From Stdlib Require Import Vectors.Vector. -#[local] Set Warnings "stdlib-vector". -From CryptolToRocq Require Import SAWCoreScaffolding. -From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. -Import VectorNotations. - -(** Post-preamble section specified by you *) -From CryptolToRocq Require Import SAWCorePrelude. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. -From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. - - -(** Code generated by saw-core-rocq *) - - - - -Definition TestTypelvl_Arith2 (u1295 : Type) {Inh_u1295 : SAWCoreScaffolding.Inhabited u1295} (_P : CryptolPrimitivesForSAWCore.PLiteral u1295) : u1295 := - CryptolPrimitivesForSAWCore.ecNumber (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) u1295 _P. - diff --git a/otherTests/saw-core-rocq/test_typelevel.saw b/otherTests/saw-core-rocq/test_typelevel.saw index fc4dea3b3c..9bfb57376f 100644 --- a/otherTests/saw-core-rocq/test_typelevel.saw +++ b/otherTests/saw-core-rocq/test_typelevel.saw @@ -1,13 +1,13 @@ // Test: Cryptol built-in type-level operations. let t1 = {{ `(max (width (width 9)) (width 9)) == 4 }}; -write_rocq_term "TestTypelvl_MaxWidth" [] [] "" t1; +write_rocq_term "TestTypelvl_MaxWidth" [] [] "test_typelevel_1.v" t1; let t2 = {{ `(min (width (width 9)) (width 9)) == 3 }}; -write_rocq_term "TestTypelvl_MinWidth" [] [] "" t2; +write_rocq_term "TestTypelvl_MinWidth" [] [] "test_typelevel_2.v" t2; let t3 = {{ `((1 + (2 * 3) % 3) / 3) }}; -write_rocq_term "TestTypelvl_Arith1" [] [] "" t3; +write_rocq_term "TestTypelvl_Arith1" [] [] "test_typelevel_3.v" t3; let t4 = {{ `(lg2 ((3^^3 /^ 3) %^ 3)) }}; -write_rocq_term "TestTypelvl_Arith2" [] [] "" t4; +write_rocq_term "TestTypelvl_Arith2" [] [] "test_typelevel_4.v" t4; diff --git a/otherTests/saw-core-rocq/test_typelevel_1.v.good b/otherTests/saw-core-rocq/test_typelevel_1.v.good new file mode 100644 index 0000000000..ae1e5b019a --- /dev/null +++ b/otherTests/saw-core-rocq/test_typelevel_1.v.good @@ -0,0 +1,34 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTypelvl_MaxWidth: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xO + (Stdlib.PArith.BinPos.xO Stdlib.PArith.BinPos.xH)))) + SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger + in + CryptolPrimitivesForSAWCore.ecEq SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PEqInteger var__0 var__0. diff --git a/otherTests/saw-core-rocq/test_typelevel_1.vo.log.good b/otherTests/saw-core-rocq/test_typelevel_1.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_typelevel_2.v.good b/otherTests/saw-core-rocq/test_typelevel_2.v.good new file mode 100644 index 0000000000..532665e104 --- /dev/null +++ b/otherTests/saw-core-rocq/test_typelevel_2.v.good @@ -0,0 +1,33 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTypelvl_MinWidth: Init.Datatypes.bool := + let var__0 + := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum + (Stdlib.PArith.BinPos.Pos.to_nat + (Stdlib.PArith.BinPos.xI Stdlib.PArith.BinPos.xH))) + SAWCoreScaffolding.Integer CryptolPrimitivesForSAWCore.PLiteralInteger + in + CryptolPrimitivesForSAWCore.ecEq SAWCoreScaffolding.Integer + CryptolPrimitivesForSAWCore.PEqInteger var__0 var__0. diff --git a/otherTests/saw-core-rocq/test_typelevel_2.vo.log.good b/otherTests/saw-core-rocq/test_typelevel_2.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_typelevel_3.v.good b/otherTests/saw-core-rocq/test_typelevel_3.v.good new file mode 100644 index 0000000000..6a42da8581 --- /dev/null +++ b/otherTests/saw-core-rocq/test_typelevel_3.v.good @@ -0,0 +1,29 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTypelvl_Arith1 + (u1293: Type) + {Inh_u1293: SAWCoreScaffolding.Inhabited u1293} + (_P: CryptolPrimitivesForSAWCore.PLiteral u1293) + : u1293 := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) u1293 _P. diff --git a/otherTests/saw-core-rocq/test_typelevel_3.vo.log.good b/otherTests/saw-core-rocq/test_typelevel_3.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/otherTests/saw-core-rocq/test_typelevel_4.v.good b/otherTests/saw-core-rocq/test_typelevel_4.v.good new file mode 100644 index 0000000000..81ca9e71d0 --- /dev/null +++ b/otherTests/saw-core-rocq/test_typelevel_4.v.good @@ -0,0 +1,29 @@ + +(** Mandatory imports from saw-core-rocq *) +From Stdlib Require Import Lists.List. +From Stdlib Require Import String. +#[local] Set Warnings "-stdlib-vector". +From Stdlib Require Import Vectors.Vector. +#[local] Set Warnings "stdlib-vector". +From CryptolToRocq Require Import SAWCoreScaffolding. +From CryptolToRocq Require Import SAWCoreVectorsAsRocqVectors. +Import VectorNotations. + +(** Post-preamble section specified by you *) +From CryptolToRocq Require Import SAWCorePrelude. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCore. +From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra. + + +(** Code generated by saw-core-rocq *) + + + + +Definition TestTypelvl_Arith2 + (u1295: Type) + {Inh_u1295: SAWCoreScaffolding.Inhabited u1295} + (_P: CryptolPrimitivesForSAWCore.PLiteral u1295) + : u1295 := + CryptolPrimitivesForSAWCore.ecNumber + (CryptolPrimitivesForSAWCore.TCNum SAWCoreScaffolding.Zero) u1295 _P. diff --git a/otherTests/saw-core-rocq/test_typelevel_4.vo.log.good b/otherTests/saw-core-rocq/test_typelevel_4.vo.log.good new file mode 100644 index 0000000000..e69de29bb2 diff --git a/saw-central/src/SAWCentral/Prover/Exporter.hs b/saw-central/src/SAWCentral/Prover/Exporter.hs index 83f8dd7d92..29b9ac4499 100644 --- a/saw-central/src/SAWCentral/Prover/Exporter.hs +++ b/saw-central/src/SAWCentral/Prover/Exporter.hs @@ -64,7 +64,7 @@ import System.IO.Temp(emptySystemTempFile) import Data.Text (Text) import qualified Data.Text as Text import qualified Data.Vector as V -import Prettyprinter (vcat) +import qualified Prettyprinter as PP import Prettyprinter.Render.Text import Lang.JVM.ProcessUtils (readProcessExitIfFailure) @@ -415,44 +415,57 @@ rocqTranslationConfiguration :: [Text] -> Rocq.TranslationConfiguration rocqTranslationConfiguration renamings skips = Rocq.TranslationConfiguration - { Rocq.constantRenaming = map (\(a, b) -> (Text.unpack a, Text.unpack b)) renamings - , Rocq.constantSkips = map Text.unpack skips + { Rocq.constantRenaming = renamings + , Rocq.constantSkips = skips , Rocq.monadicTranslation = False - , Rocq.postPreamble = [] + , Rocq.postPreamble = "" , Rocq.vectorModule = "SAWCoreVectorsAsRocqVectors" } withImportSAWCorePrelude :: Rocq.TranslationConfiguration -> Rocq.TranslationConfiguration withImportSAWCorePrelude config@(Rocq.TranslationConfiguration { Rocq.postPreamble }) = - config { Rocq.postPreamble = postPreamble ++ unlines - [ "From CryptolToRocq Require Import SAWCorePrelude." - ] + config { + Rocq.postPreamble = postPreamble <> + "From CryptolToRocq Require Import SAWCorePrelude.\n" } withImportSAWCorePreludeExtra :: Rocq.TranslationConfiguration -> Rocq.TranslationConfiguration withImportSAWCorePreludeExtra config@(Rocq.TranslationConfiguration { Rocq.postPreamble }) = - config { Rocq.postPreamble = postPreamble ++ unlines - [ "From CryptolToRocq Require Import SAWCorePreludeExtra." - ] + config { + Rocq.postPreamble = postPreamble <> + "From CryptolToRocq Require Import SAWCorePreludeExtra.\n" } withImportCryptolPrimitivesForSAWCore :: Rocq.TranslationConfiguration -> Rocq.TranslationConfiguration withImportCryptolPrimitivesForSAWCore config@(Rocq.TranslationConfiguration { Rocq.postPreamble }) = - config { Rocq.postPreamble = postPreamble ++ unlines - [ "From CryptolToRocq Require Import CryptolPrimitivesForSAWCore." - ] + config { + Rocq.postPreamble = postPreamble <> + "From CryptolToRocq Require Import CryptolPrimitivesForSAWCore.\n" } withImportCryptolPrimitivesForSAWCoreExtra :: Rocq.TranslationConfiguration -> Rocq.TranslationConfiguration withImportCryptolPrimitivesForSAWCoreExtra config@(Rocq.TranslationConfiguration { Rocq.postPreamble }) = - config { Rocq.postPreamble = postPreamble ++ unlines - [ "From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra." - ] + config { + Rocq.postPreamble = postPreamble <> + "From CryptolToRocq Require Import CryptolPrimitivesForSAWCoreExtra.\n" } +writeRocqDoc :: FilePath -> PP.Doc ann -> IO () +writeRocqDoc path doc = + let opts = PP.LayoutOptions $ PP.AvailablePerLine 80 1.0 + doc' = PP.layoutSmart opts doc + issue h = renderIO h doc' + in + case path of + "" -> issue stdout + "-" -> issue stdout + _ -> do + h <- openFile path WriteMode + issue h + hClose h writeRocqTerm :: Text -> @@ -470,14 +483,11 @@ writeRocqTerm name notations skips path t = do sc <- getSharedContext mm <- io $ scGetModuleMap sc tp <- io $ scTypeOf sc t - case Rocq.translateTermAsDeclImports configuration mm (Rocq.Ident (Text.unpack name)) t tp of + case Rocq.translateTermAsDeclImports configuration mm (Rocq.Ident name) t tp of Left err -> do err' <- liftIO $ Rocq.ppTranslationError sc err throwTopLevel $ "Error translating: " ++ Text.unpack err' - Right doc -> io $ case path of - "" -> print doc - "-" -> print doc - _ -> writeFile path (show doc) + Right doc -> io $ writeRocqDoc path doc writeRocqProp :: Text -> @@ -522,18 +532,15 @@ writeRocqCryptolModule inputFile outputFile notations skips = io $ do withImportSAWCorePreludeExtra $ withImportSAWCorePrelude $ rocqTranslationConfiguration notations skips - let nm = Rocq.Ident (takeBaseName inputFile) + let nm = Rocq.Ident (Text.pack $ takeBaseName inputFile) res <- Rocq.translateCryptolModule sc nm configuration cryptolPreludeDecls cm case res of Left err -> do err' <- Rocq.ppTranslationError sc err putStrLn $ Text.unpack err' Right cmDoc -> do - let doc = vcat [ Rocq.preamble configuration, cmDoc ] - case outputFile of - "" -> print doc - "-" -> print doc - _ -> writeFile outputFile $ show doc + let doc = PP.vcat [ Rocq.preamble configuration, cmDoc ] + writeRocqDoc outputFile doc nameOfSAWCorePrelude :: Un.ModuleName nameOfSAWCorePrelude = Un.moduleName preludeModule @@ -553,11 +560,8 @@ writeRocqSAWCorePrelude outputFile notations skips = do m <- scFindModule sc nameOfSAWCorePrelude let configuration = rocqTranslationConfiguration notations skips m' <- Rocq.translateSAWModule sc configuration mm m - let doc = vcat [ Rocq.preamble configuration, m'] - case outputFile of - "" -> print doc - "-" -> print doc - _ -> writeFile outputFile $ show doc + let doc = PP.vcat [ Rocq.preamble configuration, m'] + writeRocqDoc outputFile doc writeRocqCryptolPrimitivesForSAWCore :: FilePath -> @@ -576,11 +580,8 @@ writeRocqCryptolPrimitivesForSAWCore cryFile notations skips = do withImportSAWCorePrelude $ rocqTranslationConfiguration notations skips m' <- Rocq.translateSAWModule sc configuration mm m - let doc = vcat [ Rocq.preamble configuration, m'] - case cryFile of - "" -> print doc - "-" -> print doc - _ -> writeFile cryFile $ show doc + let doc = PP.vcat [ Rocq.preamble configuration, m'] + writeRocqDoc cryFile doc -- | Translate a SAWCore term into an AIG bitblastPrim :: (AIG.IsAIG l g) => AIG.Proxy l g -> SharedContext -> Term -> IO (AIG.Network l g) diff --git a/saw-core-rocq/rocq/handwritten/CryptolToRocq/SAWCoreScaffolding.v b/saw-core-rocq/rocq/handwritten/CryptolToRocq/SAWCoreScaffolding.v index 37530c8e7b..4476fd688a 100644 --- a/saw-core-rocq/rocq/handwritten/CryptolToRocq/SAWCoreScaffolding.v +++ b/saw-core-rocq/rocq/handwritten/CryptolToRocq/SAWCoreScaffolding.v @@ -137,7 +137,6 @@ Definition coerce (a b : sort 0) (p : @eq (sort 0) a b) (x : a) : b := | @eq_refl _ _ => x end . -Check eq_sym. Definition rcoerce (a b : sort 0) (p : @eq (sort 0) b a) (x : a) : b := coerce a b (eq_sym p) x diff --git a/saw-core-rocq/src/Language/Rocq/AST.hs b/saw-core-rocq/src/Language/Rocq/AST.hs index 7b452863e9..73f5aff3c7 100644 --- a/saw-core-rocq/src/Language/Rocq/AST.hs +++ b/saw-core-rocq/src/Language/Rocq/AST.hs @@ -1,92 +1,154 @@ -{-# OPTIONS_GHC -Wno-missing-export-lists #-} +{-# LANGUAGE OverloadedStrings #-} {- | Module : Language.Rocq.AST -Copyright : Galois, Inc. 2018 +Description : AST definition for Rocq exporter License : BSD3 -Maintainer : atomb@galois.com -Stability : experimental -Portability : portable +Maintainer : saw@galois.com + +This module declares a (simplified) Rocq/Gallina AST for the back end +of the Rocq exporter. -} -module Language.Rocq.AST where +module Language.Rocq.AST ( + Ident(..), + Sort(..), + BinderImplicity(..), + Binder(..), + PiBinder(..), + Term(..), + Type, + Constructor(..), + Inductive(..), + Decl(..) + ) where import Data.String (IsString(..)) +import Data.Text (Text) +import qualified Data.Text as Text --- | An 'Ident' is a Rocq qualified identifier represented as a string, --- with the invariant that it is lexically valid. --- A valid Rocq identifier is a sequence of letters, digits, --- underscores and primes that starts with a letter or underscore. --- A /qualified/ identifier is a sequence of one or more identifiers --- separated by periods. -newtype Ident = Ident String +-- | An 'Ident' is a Rocq qualified identifier represented as a +-- string, with the invariant that it is lexically valid. +-- +-- A valid Rocq identifier is a sequence of letters, digits, +-- underscores and primes that starts with a letter or underscore. +-- +-- A /qualified/ identifier is a sequence of one or more identifiers +-- separated by periods. +-- +-- We don't enforce the distinction between qualified and unqualified +-- identifiers in this representation. +-- +newtype Ident = Ident Text deriving (Eq, Ord) instance Show Ident where show (Ident s) = show s instance IsString Ident where - fromString s = Ident s + fromString s = Ident $ Text.pack s +-- | Type to hold universes +-- data Sort = Prop | Set | Type - deriving (Show) + deriving (Eq, Show) + +-- | Is this a maximally-inserted implicit ("{}") or explicit binder? +data BinderImplicity + = Implicit + | Explicit + deriving (Eq, Show) + +-- | Bound variable in a `Lambda` or `Let`, optionally with type +data Binder + = Binder BinderImplicity Ident (Maybe Type) + deriving (Show) +-- | Bound variable in a `Pi` (forall), optionally with a name +-- +-- XXX: we can't represent "exists". Currently we never generate it, +-- but that could change. +data PiBinder + = PiBinder BinderImplicity (Maybe Ident) Type + deriving (Show) + +-- | Type to hold Gallina expressions +-- data Term + + -- | fun x => e = Lambda [Binder] Term - | Fix Ident [Binder] Term Term + + -- | Fix f x : ty := e + | Fix Ident [Binder] Type Term + + -- | forall x, e | Pi [PiBinder] Term + + -- | let f arg [: ty] := e in e | Let Ident [Binder] (Maybe Type) Term Term + + -- | if e then e else e | If Term Term Term + + -- | f args | App Term [Term] + + -- | Prop or Type | Sort Sort + + -- | x | Var Ident - -- | A variable that needs to be printed with a leading at sign in order to - -- make all arguments explicit + + -- | \@x, that is, Var with \@ in order to explicitly apply implicit + -- arguments. | ExplVar Ident - -- | A ascription @tm : tp@ of a type to a term - | Ascription Term Term + + -- | Type annotation e: ty + | Ascription Term Type + + -- | integer constant in nat | NatLit Integer + + -- | integer constant in Z | ZLit Integer + + -- | [e1; e2; ...] | List [Term] - | StringLit String - | Scope Term String - | Ltac String - deriving (Show) --- | Type synonym useful for indicating when a term is used as a type. -type Type = Term + -- | "foo" + | StringLit Text --- | Is this a maximally-inserted implicit ("{}") or explicit binder? -data BinderImplicity - = Implicit - | Explicit - deriving (Show) + -- | e%scope + | Scope Term Text --- | An 'Ident' with an optional 'Type', which may be explicit or implicit. --- For use representing the bound variables in 'Lambda's, 'Let's, etc. -data Binder - = Binder BinderImplicity Ident (Maybe Type) - deriving (Show) + -- | Expression-level ltac invocation ltac:(text) + | Ltac Text --- | An 'Type' with an optional 'Ident', which may be explicit or implicit. --- For use representing arguments in 'Pi' types. -data PiBinder - = PiBinder BinderImplicity (Maybe Ident) Type - deriving (Show) + deriving (Show) + +-- | Type synonym useful for indicating when a term is used as a type. +type Type = Term --- Because saw-core does not give very helpful access to the parameters and --- indices, we just follow their style and define the constructor by its fully --- applied return type. +-- | Single constructor declaration in an inductive type declaration. +-- +-- Because saw-core does not give very helpful access to the parameters and +-- indices, we just follow that style and define the constructor by its fully +-- applied return type. +-- +-- NOTE: constructor names must be unqualified. +-- data Constructor = Constructor { constructorName :: Ident - -- ^ NOTE: The constructor name must be an /unqualified/ identifier. - , constructorType :: Term + , constructorType :: Type } deriving (Show) +-- | Inductive type declaration +-- data Inductive = Inductive { inductiveName :: Ident , inductiveParameters :: [Binder] @@ -96,13 +158,20 @@ data Inductive = Inductive } deriving (Show) +-- | Arbitrary top-level declaration. +-- +-- Does not support modules or functors. +-- +-- `Snippet` inserts raw text, presumably for things this AST can't +-- represent. XXX: probably shouldn't need that +-- data Decl = Axiom Ident Type - | Comment String + | Comment Text | Definition Ident [Binder] (Maybe Type) Term | Parameter Ident Type | Variable Ident Type | InductiveDecl Inductive | Section Ident [Decl] - | Snippet String + | Snippet Text deriving (Show) diff --git a/saw-core-rocq/src/Language/Rocq/Pretty.hs b/saw-core-rocq/src/Language/Rocq/Pretty.hs index 8010866aa2..4d20387a83 100644 --- a/saw-core-rocq/src/Language/Rocq/Pretty.hs +++ b/saw-core-rocq/src/Language/Rocq/Pretty.hs @@ -3,265 +3,702 @@ {- | Module : Language.Rocq.Pretty -Copyright : Galois, Inc. 2018 +Description : Printer for Rocq AST License : BSD3 Maintainer : atomb@galois.com -Stability : experimental -Portability : portable + +Converts Rocq AST to prettyprinter documents. -} module Language.Rocq.Pretty (prettyDecl) where -import Prettyprinter - -import Language.Rocq.AST import Data.Word +import Data.Text (Text) +import qualified Data.Text as Text import Numeric (showHex) -import Prelude hiding ((<$>), (<>)) --- | Replace all occurrences of the double quote character @"@ with the string --- @""@, i.e., two copies of it, as this is how Rocq escapes double quote --- characters. -escapeStringLit :: String -> String -escapeStringLit = concatMap (\c -> if c == '"' then "\"\"" else [c]) +import qualified Prettyprinter as PP +import Prettyprinter ((<+>)) + +import Language.Rocq.AST + + +------------------------------------------------------------ +-- Support + +-- | Mark the last entry in a list. +markLast :: [a] -> [(Bool, a)] +markLast xs = + let once x results = (null results, x) : results in + foldr once [] xs -text :: String -> Doc ann -text = pretty +-- | Replace all occurrences of the double quote character @"@ with +-- the string @""@, i.e., two copies of it, as this is how Rocq +-- escapes double quote characters. +escapeStringLit :: Text -> Text +escapeStringLit str = + let oneChar c = if c == '"' then "\"\"" else Text.singleton c in + Text.concatMap oneChar str -string :: String -> Doc ann -string = pretty +-- | Wrapper for printing arbitrary text +text :: Text -> PP.Doc ann +text s = PP.pretty s -integer :: Integer -> Doc ann -integer = pretty +-- | Wrapper for printing integers +integer :: Integer -> PP.Doc ann +integer n = PP.pretty n + +-- | Common code to print some names with a type +prettyNamesAndType :: [Ident] -> Type -> PP.Doc ann +prettyNamesAndType names ty = + let names' = PP.hsep $ map prettyIdent names + ty' = prettyTerm PrecNone ty + long = PP.nest 3 $ names' <> ":" <+> ty' + short = PP.group $ names' <> ":" <+> ty' + in + PP.flatAlt long short --- FUTURE: Move these to SAWSupport.Pretty +-- | Insert parens based on the first argument +parensIf :: Bool -> PP.Doc ann -> PP.Doc ann +parensIf p d = if p then PP.parens d else d --- | Like hsep, but behaves usefully for lists that might be empty: --- returns the empty doc like hsep for empty lists, but for --- non-empty lists prepends horizontal space. The result can then --- be inserted like this: x <> result <+> y, and will produce --- either "x y" or "x result y" but not "x y", which is what --- happens if you do x <+> hsep ... <+> y. + +------------------------------------------------------------ +-- AST tools + +-- | Check if two terms are the \"same\". This is used to fold together +-- forall entries (like @forall (x y: nat)@) and so can be +-- conservative. It does only as much work as needed to make real +-- occurrences work, and calls everything else false. In particular +-- we make no attempt to handle alpha-equivalence. +sameTerm :: Term -> Term -> Bool +sameTerm e1 e2 = + case (e1, e2) of + -- Cases we do not handle + (Lambda{}, _) -> False + (_, Lambda{}) -> False + (Fix{}, _) -> False + (_, Fix{}) -> False + (Pi{}, _) -> False + (_, Pi{}) -> False + (Let{}, _) -> False + (_, Let{}) -> False + (Ltac{}, _) -> False + (_, Ltac{}) -> False + + -- Matching cases we do handle + (If c1 t1 f1, If c2 t2 f2) -> + sameTerm c1 c2 && sameTerm t1 t2 && sameTerm f1 f2 + (App f1 args1, App f2 args2) -> + sameTerm f1 f2 && length args1 == length args2 && + and (zipWith sameTerm args1 args2) + (Sort s1, Sort s2) -> + s1 == s2 + (Var x1, Var x2) -> + x1 == x2 + (ExplVar x1, ExplVar x2) -> + x1 == x2 + (Ascription e1' t1, Ascription e2' t2) -> + sameTerm e1' e2' && sameTerm t1 t2 + (NatLit n1, NatLit n2) -> + n1 == n2 + (ZLit n1, ZLit n2) -> + n1 == n2 + (List xs1, List xs2) -> + length xs1 == length xs2 && and (zipWith sameTerm xs1 xs2) + (StringLit s1, StringLit s2) -> + s1 == s2 + (Scope e1' s1, Scope e2' s2) -> + s1 == s2 && sameTerm e1' e2' + + -- Fill out the cases so if a new constructor appears the + -- compiler reminds us to handle it. + (If{}, _) -> False + (App{}, _) -> False + (Sort{}, _) -> False + (Var{}, _) -> False + (ExplVar{}, _) -> False + (Ascription{}, _) -> False + (NatLit{}, _) -> False + (ZLit{}, _) -> False + (List{}, _) -> False + (StringLit{}, _) -> False + (Scope{}, _) -> False + +-- | Maybe wrapper for sameTerm +sameMaybeTerm :: Maybe Term -> Maybe Term -> Bool +sameMaybeTerm me1 me2 = case (me1, me2) of + (Nothing, Nothing) -> True + (Nothing, Just _) -> False + (Just _, Nothing) -> False + (Just e1, Just e2) -> sameTerm e1 e2 + + +------------------------------------------------------------ +-- AST sugaring + +-- | Contracted regular binder. +-- +-- Explicit parameters with no type are printed loose: "x" +-- Explicit parameters with a type are grouped by type: "(x y: a)" +-- Implicit parameters are grouped by maybe-type: "{x y}", "{x y: a}". -- --- This baloney arises because d1 <+> emptyDoc <+> d2 prints two --- spaces instead of one, which I'd describe as a bug. If you --- _really_ want to accumulate multiple spaces by concatenating --- empty docs, which seems against the concept of prettyprinting --- layout anyway, there can be another way to do that, like the --- latex "phantom" object. -hsep' :: [Doc ann] -> Doc ann -hsep' docs = case docs of - [] -> emptyDoc - _ : _ -> emptyDoc <+> hsep docs - --- This version glues the separator to the end of each element. -tightSepList :: Doc ann -> [Doc ann] -> Doc ann -tightSepList _ [] = mempty -tightSepList _ [d] = d -tightSepList s (d:l) = d <> s <+> tightSepList s l - -semiSepList :: [Doc ann] -> Doc ann -semiSepList = tightSepList semi - -period :: Doc ann -period = "." - -prettyIdent :: Ident -> Doc ann -prettyIdent (Ident s) = pretty s - -prettyNameType :: Ident -> Type -> Doc ann -prettyNameType x ty = prettyIdent x <+> colon <+> prettyTerm PrecNone ty - -prettyBinder :: Binder -> Doc ann -prettyBinder b = case b of - Binder Explicit x Nothing -> prettyIdent x - Binder Explicit x (Just ty) -> parens $ prettyNameType x ty - Binder Implicit x Nothing -> braces $ prettyIdent x - Binder Implicit x (Just ty) -> braces $ prettyNameType x ty - -prettyPiBinder :: PiBinder -> Doc ann -prettyPiBinder b = case b of - PiBinder Explicit Nothing ty -> - prettyTerm PrecApp ty <+> "->" - PiBinder Explicit (Just x) ty -> - "forall" <+> parens (prettyNameType x ty) <> comma - PiBinder Implicit Nothing ty -> - braces (prettyTerm PrecApp ty) <+> "->" - PiBinder Implicit (Just x) ty -> - "forall" <+> braces (prettyNameType x ty) <> comma - -prettyBinders :: [Binder] -> Doc ann -prettyBinders bs = hsep $ map prettyBinder bs - -prettyMaybeTy :: Maybe Type -> Doc ann -prettyMaybeTy Nothing = mempty -prettyMaybeTy (Just ty) = colon <+> prettyTerm PrecNone ty - -prettySort :: Sort -> Doc ann +data Binders' + = ExplicitUntypedBinder' Ident + | ExplicitTypedBinders' [Ident] Type + | ImplicitBinders' [Ident] (Maybe Type) + +-- | Contracted pi-binder. +-- +-- Anonymous pi "binders" are just type names and are printed loose, +-- with or without braces. +-- +-- Named pi binders are grouped first by type, and then all together +-- with a single "forall" keyword: "forall (x y: a) {z: b}, ..." +-- +data PiBinders' + = AnonPiBinder' BinderImplicity Type + | NamedPiBinders' [(BinderImplicity, [Ident], Type)] + +-- | Fold together adjacent binders as allowed by the concrete syntax. +contractBinders :: [Binder] -> [Binders'] +contractBinders bs0 = + -- state frobs for when we're looking at implicit binders + -- (Just $ Left s in the state) + let newImplicit x mty = ([x], mty) + addImplicit x mty (prevnames, prevmty) = + if sameMaybeTerm mty prevmty then + Just (x : prevnames, prevmty) + else + Nothing + popImplicit (names, mty) = + ImplicitBinders' (reverse names) mty + in + -- state frobs for when we're looking at explicit binders + -- with types (Just $ right s in the state) + let newExplicit x ty = ([x], ty) + addExplicit x ty (prevnames, prevty) = + if sameTerm ty prevty then + Just (x : prevnames, prevty) + else + Nothing + popExplicit (names, ty) = + ExplicitTypedBinders' (reverse names) ty + in + + -- fold function to do the contraction + let once (results, state) b = case state of + Nothing -> case b of + Binder Implicit x mty -> + (results, Just $ Left $ newImplicit x mty) + Binder Explicit x Nothing -> + let here = ExplicitUntypedBinder' x in + (here : results, Nothing) + Binder Explicit x (Just ty) -> + (results, Just $ Right $ newExplicit x ty) + Just (Left s) -> case b of + Binder Implicit x mty -> + case addImplicit x mty s of + Nothing -> + let prev = popImplicit s in + (prev : results, Just $ Left $ newImplicit x mty) + Just s' -> + (results, Just $ Left s') + Binder Explicit x Nothing -> + let prev = popImplicit s + here = ExplicitUntypedBinder' x + in + (here : prev : results, Nothing) + Binder Explicit x (Just ty) -> + let prev = popImplicit s in + (prev : results, Just $ Right $ newExplicit x ty) + Just (Right s) -> case b of + Binder Implicit x mty -> + let prev = popExplicit s in + (prev : results, Just $ Left $ newImplicit x mty) + Binder Explicit x Nothing -> + let prev = popExplicit s + here = ExplicitUntypedBinder' x + in + (here : prev : results, Nothing) + Binder Explicit x (Just ty) -> + case addExplicit x ty s of + Nothing -> + let prev = popExplicit s in + (prev : results, Just $ Right $ newExplicit x ty) + Just s' -> + (results, Just $ Right s') + in + let (results, state) = foldl once ([], Nothing) bs0 + results' = case state of + Nothing -> results + Just (Left s) -> popImplicit s : results + Just (Right s) -> popExplicit s : results + in + reverse results' + +-- | Type belonging to the internals of `contractPiBinders`. +-- +-- (is there no way to put this inside the function?) +type State = ([(BinderImplicity, [Ident], Type)], BinderImplicity, [Ident], Type) + +-- | Fold together adjacent pi-binders as allowed by the concrete +-- syntax. +-- +-- "Binders" without names can't be folded together, but names that +-- share the same type can be, and a chain of named binders requires +-- only one "forall" token. +contractPiBinders :: [PiBinder] -> [PiBinders'] +contractPiBinders bs0 = + -- State frobs. + let newstate :: BinderImplicity -> Ident -> Type -> State + newstate imp x ty = ([], imp, [x], ty) + + addstate :: BinderImplicity -> Ident -> Type -> State -> State + addstate imp x ty (others, previmp, prevnames, prevty) = + if imp == previmp && sameTerm ty prevty then + (others, previmp, x : prevnames, prevty) + else + ((previmp, reverse prevnames, prevty) : others, imp, [x], ty) + + popstate :: State -> PiBinders' + popstate (others, imp, names, ty) = + let others' = (imp, reverse names, ty) : others in + NamedPiBinders' $ reverse others' + in + + -- fold function to do the contraction + let once :: ([PiBinders'], Maybe State) -> PiBinder -> ([PiBinders'], Maybe State) + once (results, state) b = case state of + Nothing -> case b of + PiBinder imp Nothing ty -> + let here = AnonPiBinder' imp ty in + (here : results, Nothing) + PiBinder imp (Just x) ty -> + (results, Just $ newstate imp x ty) + Just s -> case b of + PiBinder imp Nothing ty -> + let prev = popstate s + here = AnonPiBinder' imp ty + in + (here : prev : results, Nothing) + PiBinder imp (Just x) ty -> + let s' = addstate imp x ty s in + (results, Just s') + in + let (results, state) = foldl once ([], Nothing) bs0 + results' :: [PiBinders'] + results' = case state of + Nothing -> results + Just s -> popstate s : results + in + reverse results' + + +------------------------------------------------------------ +-- Printers for AST elements + +-- | Type to hold the current expression precedence while printing +data Prec + = PrecNone + | PrecLambda + | PrecApp + | PrecAtom + deriving (Eq, Ord) + +-- | Print an `Ident` +prettyIdent :: Ident -> PP.Doc ann +prettyIdent (Ident s) = text s + +-- | Print a `sort` +prettySort :: Sort -> PP.Doc ann prettySort s = case s of Prop -> "Prop" Set -> "Set" Type -> "Type" -prettyPiBinders :: [PiBinder] -> Doc ann -prettyPiBinders bs = hsep $ map prettyPiBinder bs +-- | Print an ordinary (lambda/let) binder (group) +prettyBinder' :: Binders' -> PP.Doc ann +prettyBinder' b = case b of + ExplicitUntypedBinder' x -> + prettyIdent x + ExplicitTypedBinders' names ty -> + PP.group $ PP.parens $ prettyNamesAndType names ty + ImplicitBinders' names Nothing -> + let names' = PP.hsep $ map prettyIdent names + long = PP.nest 3 names' + short = PP.group names' + entry = PP.flatAlt long short + in + PP.group $ PP.parens entry + ImplicitBinders' names (Just ty) -> + PP.group $ PP.braces $ prettyNamesAndType names ty -data Prec - = PrecNone - | PrecLambda - | PrecApp - | PrecAtom - deriving (Eq, Ord) - -parensIf :: Bool -> Doc ann -> Doc ann -parensIf p d = if p then parens d else d - -prettyTerm :: Prec -> Term -> Doc ann -prettyTerm p e = - case e of - Lambda bs t -> - let bs' = prettyBinders bs - t' = prettyTerm PrecLambda t - in - parensIf (p > PrecLambda) $ "fun" <+> bs' <+> "=>" <+> t' +-- | Print a pi (forall) binder +-- (we don't seem to have a representation for @exists@) +prettyPiBinder' :: PiBinders' -> [PP.Doc ann] +prettyPiBinder' b = case b of + AnonPiBinder' Explicit ty -> + [PP.group $ prettyTerm PrecApp ty <+> "->"] + AnonPiBinder' Implicit ty -> + [PP.group $ PP.braces (prettyTerm PrecApp ty) <+> "->"] + NamedPiBinders' entries -> + let prettyEntry (isLast, (imp, names, ty)) = + let entry = prettyNamesAndType names ty + entry' = case imp of + Explicit -> PP.parens entry + Implicit -> PP.braces entry + entry'' = if isLast then entry' <> "," else entry' + in + PP.group entry'' + in + -- FUTURE: it won't matter for the current downstream uses but + -- we might want to graft the "forall" keyword to the first + -- entry instead of letting it float loose. + let entries' = map prettyEntry $ markLast entries in + "forall" : entries' + +-- | Print a chain of bindings. Contract the chain where syntactically +-- possible, because it's a lot more readable that way. +-- +-- The return value is one doc for each contracted group so they can +-- be laid out as desired. +-- +prettyBinders :: [Binder] -> [PP.Doc ann] +prettyBinders binders = + map prettyBinder' $ contractBinders binders + +-- | Print a chain of foralls. Contract the chain where syntactically +-- possible, because it's a lot more readable that way. +-- +-- The return value is one doc for each contracted group, meaning +-- that each entry under a "forall" keyword is sent back separately, +-- so they can be laid out as desired. +-- +prettyPiBinders :: [PiBinder] -> [PP.Doc ann] +prettyPiBinders binders = + concatMap prettyPiBinder' $ contractPiBinders binders + +-- | Common code for printing things shaped like function headers +-- +prettyFnHeader :: + PP.Doc ann -> [PP.Doc ann] -> Maybe (PP.Doc ann) -> PP.Doc ann -> + PP.Doc ann +prettyFnHeader intro bindings mbRet sep = + -- Long form + -- fun x y z ... + -- a b c ... + -- : ty + -- => + -- Short form: + -- fun x : ty => + -- + -- (the above where intro is "fun", sep is "=>") + -- + let firstpieces = intro : bindings + shortHeader = case mbRet of + Nothing -> PP.group $ PP.hsep firstpieces <+> sep + Just ret -> PP.group $ PP.hsep firstpieces <+> ":" <+> ret <+> sep + longBindings = case mbRet of + Nothing -> PP.fillSep firstpieces + Just ret -> PP.fillSep firstpieces <> PP.line <> ":" <+> ret + longHeader = PP.nest 5 longBindings <> PP.line <> PP.indent 3 sep + in + PP.flatAlt longHeader shortHeader + +-- | Common code for printing things shaped like functions +-- (@header@ will normally be the result of `prettyFnHeader`) +prettyFunction :: PP.Doc ann -> PP.Doc ann -> PP.Doc ann +prettyFunction header body = + -- Long form with long argument list and long body: + -- fun x y z ... + -- a b c ... + -- => + -- ... + -- x + 1 + -- Long form with short argument list and long body: + -- fun x => + -- ... + -- x + 1 + -- Long form with long argument list and short body: + -- fun x y z ... + -- a b c ... + -- => x + 1 + -- Short form: + -- fun x => x + 1 + -- + let longbody = PP.line <> PP.indent 3 body <> PP.line + shortbody = PP.group body + body' = PP.flatAlt longbody shortbody + long = header <> body' + short = PP.group $ header <+> body + in + PP.flatAlt long short + +-- | Print a term +prettyTerm :: Prec -> Term -> PP.Doc ann +prettyTerm p e0 = + case e0 of + Lambda binders e1 -> + let binders' = prettyBinders binders + e1' = prettyTerm PrecLambda e1 + header = prettyFnHeader "fun" binders' Nothing "=>" + in + parensIf (p > PrecLambda) $ prettyFunction header e1' Fix ident binders returnType body -> - let ident' = prettyIdent ident - binders' = prettyBinders binders - returnType' = prettyTerm PrecNone returnType - body' = prettyTerm PrecLambda body - in - parensIf (p > PrecLambda) $ - "fix" <+> ident' <+> binders' <+> ":" <+> returnType' <+> ":=" <+> body' - Pi bs t -> - let bs' = prettyPiBinders bs - t' = prettyTerm PrecLambda t - in - parensIf (p > PrecLambda) $ bs' <+> t' - Let x bs mty t body -> - let x' = prettyIdent x - bs' = prettyBinders bs - mty' = prettyMaybeTy mty - t' = prettyTerm PrecNone t - body' = prettyTerm PrecLambda body - in - parensIf (p > PrecLambda) $ fillSep [ - "let" <+> x' <+> bs' <+> mty' <+> ":=" <+> t' <+> "in", - body' - ] + let ident' = prettyIdent ident + binders' = prettyBinders binders + returnType' = Just $ prettyTerm PrecNone returnType + body' = prettyTerm PrecLambda body + intro = "fix" <+> ident' + header = prettyFnHeader intro binders' returnType' ":=" + in + parensIf (p > PrecLambda) $ prettyFunction header body' + Pi binders t -> + let binders' = prettyPiBinders binders + t' = prettyTerm PrecLambda t + longbs = PP.nest 5 $ PP.fillSep binders' + shortbs = PP.group $ PP.hsep binders' + finalbs = PP.flatAlt longbs shortbs + long = finalbs <> PP.line <> PP.indent 5 t' + short = PP.group $ finalbs <+> t' + in + parensIf (p > PrecLambda) $ PP.flatAlt long short + Let x binders mty t body -> + let x' = prettyIdent x + binders' = prettyBinders binders + mty' = prettyTerm PrecNone <$> mty + t' = prettyTerm PrecNone t + body' = prettyTerm PrecLambda body + intro = "let" <+> x' + header = prettyFnHeader intro binders' mty' ":=" + longest = PP.vsep [header, PP.indent 3 t', "in", body'] + second = PP.vsep [PP.group (header <+> t' <+> "in"), body'] + shortest = PP.group (header <+> t' <+> "in" <+> body') + shorter = PP.flatAlt second shortest + in + parensIf (p > PrecLambda) $ PP.flatAlt longest shorter If c t f -> - let c' = prettyTerm PrecNone c - t' = prettyTerm PrecNone t - f' = prettyTerm PrecLambda f - in - parensIf (p > PrecLambda) $ - "if" <+> c' <+> "then" <+> t' <+> "else" <+> f' + let c' = prettyTerm PrecNone c + t' = prettyTerm PrecNone t + f' = prettyTerm PrecLambda f + first = "if" <+> c' <+> "then" + long = PP.vsep [first, PP.indent 3 t', "else", PP.indent 3 f'] + short = PP.group (first <+> t' <+> "else" <+> f') + in + parensIf (p > PrecLambda) $ PP.flatAlt long short App f [] -> - prettyTerm p f + prettyTerm p f App f args -> - let f' = prettyTerm PrecApp f - args' = map (prettyTerm PrecAtom) args - in - parensIf (p > PrecApp) $ hsep (f' : args') + -- + -- The short form of this is obviously "f arg arg arg". + -- + -- For longer forms, I'd like it to pick either + -- blahblah + -- blah f arg arg + -- arg arg + -- or + -- blahblah + -- blahblah blub blub blub + -- f arg arg arg + -- arg + -- + -- for short f, or + -- blahblah + -- blah fffff arg arg + -- arg arg + -- or + -- blahblah + -- blahblah blub blub blub + -- fffff arg arg arg + -- arg + -- + -- depending on how far off to the right it is. This is + -- complicated by the fact that PP.width doesn't let you + -- examine the width of a subdocument without emitting it, + -- which is annoying and silly of it. (That is, the null + -- usage of PP.width is "PP.width doc $ \_ -> PP.empty", + -- not "PP.width doc $ \_ -> doc". The latter prints doc + -- twice.) + -- + -- The logic below does the following: + -- - either indents by the width of f' (and a space) or by 3 + -- (this is in long_a) + -- - inserts PP.line before f' if we'll be indenting the + -- args by more than 6 spaces + -- (this is in long) + -- + let f' = prettyTerm PrecApp f + args' = map (\a -> PP.group $ prettyTerm PrecAtom a) args + + short_a = PP.group $ PP.hsep (f' : args') + short = parensIf (p > PrecApp) short_a + + long_a = PP.width f' $ \w -> + let w' = if w <= 5 then w + 1 else 3 in + " " <> PP.nest w' (PP.fillSep args') + -- This must go here or the line break comes after the + -- parens, and that's one thing for C but very weird here. + long_b = parensIf (p > PrecApp) long_a + long = PP.nesting $ \nest -> PP.column $ \col -> + if col < nest + 6 then long_b + else PP.line <> long_b + in + PP.flatAlt long short Sort s -> - prettySort s + prettySort s Var x -> - prettyIdent x + prettyIdent x ExplVar x -> - let x' = prettyIdent x in - parensIf (p > PrecApp) $ "@" <> x' + let x' = prettyIdent x in + parensIf (p > PrecApp) $ "@" <> x' Ascription tm tp -> - let tm' = prettyTerm PrecApp tm - tp' = prettyTerm PrecApp tp - in - parensIf (p > PrecLambda) $ tm' <+> ":" <+> tp' + let tm' = prettyTerm PrecApp tm + tp' = prettyTerm PrecApp tp + long = PP.nest 5 $ PP.fillSep [tm' <> ":", tp'] + short = PP.group $ tm' <> ":" <+> tp' + in + parensIf (p > PrecLambda) $ PP.flatAlt long short NatLit i -> - if i > 1000 then - -- Explicitly convert from Z if an integer is too big - parensIf (p > PrecLambda) ("Z.to_nat" <+> integer i <> "%Z") - else - integer i + if i > 1000 then + -- Explicitly convert from Z if an integer is too big + parensIf (p > PrecLambda) ("Z.to_nat" <+> integer i <> "%Z") + else + integer i ZLit i -> - -- we use hex unless our integer is a positive or negative digit - -- XXX: this cannot possibly work as intended for negative values - if abs i > 9 then - let ui = toInteger (fromInteger i :: Word64) - ui' = showHex ui [] - in - text ("0x" ++ ui' ++ "%Z") - else if i < 0 then - text ("(" ++ show i ++ ")%Z") - else - text (show i ++ "%Z") + -- we use hex unless our integer is a positive or negative digit + -- XXX: this cannot possibly work as intended for negative values + if abs i > 9 then + let ui = toInteger (fromInteger i :: Word64) + ui' = showHex ui [] + in + text ("0x" <> Text.pack ui' <> "%Z") + else if i < 0 then + text ("(" <> Text.pack (show i) <> ")%Z") + else + text (Text.pack (show i) <> "%Z") List ts -> - let ts' = map (prettyTerm PrecNone) ts in - brackets $ semiSepList ts' + let ts' = PP.punctuate ";" $ map (prettyTerm PrecNone) ts + long = PP.brackets (PP.line <> PP.indent 3 (PP.vsep ts') <> PP.line) + short = PP.group $ PP.brackets $ PP.hsep ts' + in + PP.flatAlt long short StringLit s -> - dquotes (string $ escapeStringLit s) + PP.dquotes (text $ escapeStringLit s) Scope term scope -> - let term' = prettyTerm PrecAtom term - scope' = text scope - in - term' <> "%" <> scope' + let term' = prettyTerm PrecAtom term + scope' = text scope + in + term' <> "%" <> scope' Ltac s -> - "ltac:" <> parens (string s) + "ltac:" <> PP.parens (text s) + +-- | Print a single constructor +prettyConstructor :: Constructor -> PP.Doc ann +prettyConstructor (Constructor {..}) = + let name' = prettyIdent constructorName + ty' = prettyTerm PrecNone constructorType + in + PP.nest 5 $ "|" <+> PP.group (name' <> ":" <+> ty') + +-- | Print an inductive type declaration +prettyInductive :: Inductive -> PP.Doc ann +prettyInductive (Inductive {..}) = + let name' = prettyIdent inductiveName + params' = prettyBinders inductiveParameters + indices' = prettyPiBinders inductiveIndices + sort' = prettySort inductiveSort + ctors' = map prettyConstructor inductiveConstructors + intro' = "Inductive" <+> name' + lhs' = case params' of + [] -> intro' <> ":" + _ -> + let short = PP.group $ intro' <+> PP.hsep params' <+> ":" + longparams = PP.indent 5 (PP.vsep params') + long = PP.vsep [intro', longparams, PP.indent 3 ":"] + in + PP.flatAlt long short + rhs' = case indices' of + [] -> sort' <+> ":=" + _ -> + let short = PP.group $ PP.hsep indices' <+> sort' <+> ":=" + long = PP.nest 5 $ PP.fillSep $ indices' ++ [sort' <+> ":="] + in + PP.flatAlt long short + header = PP.group (lhs' <+> rhs') + in + PP.vsep ([header] ++ ctors' ++ ["."]) -prettyBasicDecl :: Doc ann -> Ident -> Type -> Doc ann +-- | Common code for the simple declarations +prettyBasicDecl :: PP.Doc ann -> Ident -> Type -> PP.Doc ann prettyBasicDecl what nm ty = - let nm' = prettyIdent nm - ty' = prettyTerm PrecNone ty - in - nest 2 (what <+> nm' <+> ":" <+> ty' <+> period) <> hardline + let nm' = prettyIdent nm + ty' = prettyTerm PrecNone ty + lhs' = PP.group $ what <+> nm' <> ":" + long = PP.nest 3 $ lhs' <+> ty' <> "." + short = PP.group $ lhs' <+> ty' <> "." + in + PP.flatAlt long short -prettyDecl :: Decl -> Doc ann -prettyDecl decl = case decl of - Axiom nm ty -> prettyBasicDecl "Axiom" nm ty - Parameter nm ty -> prettyBasicDecl "Parameter" nm ty - Variable nm ty -> prettyBasicDecl "Variable" nm ty - Comment s -> - "(*" <+> text s <+> "*)" <> hardline - Definition nm bs mty body -> +-- | Print a Definition +prettyDefinition :: Ident -> [Binder] -> Maybe Type -> Term -> PP.Doc ann +prettyDefinition nm params mty body = let nm' = prettyIdent nm - bs' = hsep' $ map prettyBinder bs - mty' = prettyMaybeTy mty + params' = prettyBinders params + mty' = prettyTerm PrecNone <$> mty body' = prettyTerm PrecNone body + intro' = "Definition" <+> nm' + lhs' = case params' of + [] -> intro' <> ":" + _ -> + let short = PP.group $ intro' <+> PP.hsep params' <+> ":" + longparams = PP.indent 5 (PP.vsep params') + long = PP.vsep [intro', longparams, PP.indent 3 ":"] + in + PP.flatAlt long short + rhs' = case mty' of + Nothing -> ":=" + Just ty' -> ty' <+> ":=" + header = PP.group (lhs' <+> rhs') in - nest 2 ( - vsep [ - "Definition" <+> nm' <> bs' <+> mty' <+> ":=", - body' <> period - ] - ) <> hardline - InductiveDecl ind -> - prettyInductive ind - Section nm ds -> - let nm' = prettyIdent nm - ds' = map (indent 2 . prettyDecl) ds - header = "Section" <+> nm' <+> period - footer = "End" <+> nm' <+> period + let short = PP.group $ header <+> body' <> "." + long = PP.nest 3 $ PP.vsep [header, body' <> "."] in - -- XXX vsep issues soft newlines and there should be a hard newline - -- after the head and after the foot. (Note that every other Decl - -- always ends in a hard newline, so ds' is ok.) - -- (XXX: Does `vsep` on top of `hardline` generate two lines?) - vsep $ [header] ++ ds' ++ [footer] - Snippet s -> - text s - -prettyConstructor :: Constructor -> Doc ann -prettyConstructor (Constructor {..}) = - let name' = prettyIdent constructorName - ty' = prettyTerm PrecNone constructorType - in - nest 2 $ "|" <+> name' <+> ":" <+> ty' - -prettyInductive :: Inductive -> Doc ann -prettyInductive (Inductive {..}) = - let name' = prettyIdent inductiveName - params' = hsep' $ map prettyBinder inductiveParameters - indices' = hsep' $ map prettyPiBinder inductiveIndices - sort' = prettySort inductiveSort - ctors' = map prettyConstructor inductiveConstructors - header = "Inductive" <+> name' <> params' <+> ":" <> indices' <+> sort' <+> ":=" - in - vsep ([nest 2 header] ++ ctors' ++ [period]) <> hardline + PP.flatAlt long short +-- | Print a top-level declaration +prettyDecl :: Decl -> PP.Doc ann +prettyDecl decl = case decl of + Axiom nm ty -> + prettyBasicDecl "Axiom" nm ty <> PP.hardline + Parameter nm ty -> + prettyBasicDecl "Parameter" nm ty <> PP.hardline + Variable nm ty -> + prettyBasicDecl "Variable" nm ty <> PP.hardline + Comment s -> + -- None of the comments we generate are multiline. If that ever + -- changes, we'll need more logic here to print them properly. + "(*" <+> text s <+> "*)" <> PP.hardline + Definition nm binders mty body -> + prettyDefinition nm binders mty body <> PP.hardline + InductiveDecl ind -> + prettyInductive ind <> PP.hardline + Section nm ds -> + let nm' = prettyIdent nm + header = "Section" <+> nm' <> "." <> PP.hardline + ds' = map prettyDecl ds + footer = "End" <+> nm' <> "." <> PP.hardline + in + -- Note that because every declaration ends with PP.hardline (or + -- at least PP.line, which we don't group away), we don't need + -- another one after ds'. Except, without one, the indent for the + -- declarations bleeds into the footer. (wut?) + header <> PP.indent 3 (PP.vsep ds') <> PP.hardline <> footer + Snippet s -> + -- This assumes all the text snippets we have are multi-line blocks + -- that include newlines, including at the end. + -- + -- FUTURE: nothing above this code should ever call PP.group, but if + -- that changes, we may need to go through the string and manually + -- replace each \n with PP.hardline. + text s diff --git a/saw-core-rocq/src/SAWCoreRocq/CryptolModule.hs b/saw-core-rocq/src/SAWCoreRocq/CryptolModule.hs index 5b941da710..0f60ae9653 100644 --- a/saw-core-rocq/src/SAWCoreRocq/CryptolModule.hs +++ b/saw-core-rocq/src/SAWCoreRocq/CryptolModule.hs @@ -9,7 +9,7 @@ import Control.Monad.State (modify) import qualified Data.Map as Map import Cryptol.ModuleSystem.Name (Name, nameIdent) -import Cryptol.Utils.Ident (unpackIdent) +import Cryptol.Utils.Ident (identText) import qualified Language.Rocq.AST as Rocq import SAWCore.Term.Raw (Term) @@ -26,7 +26,7 @@ translateTypedTermMap :: translateTypedTermMap defs = forM defs translateAndRegisterEntry where translateAndRegisterEntry (name, t, tp) = do - let nameStr = Rocq.Ident (unpackIdent (nameIdent name)) + let nameStr = Rocq.Ident (identText (nameIdent name)) decl <- do t_trans <- TermTranslation.translateTerm t tp_trans <- TermTranslation.translateTerm tp diff --git a/saw-core-rocq/src/SAWCoreRocq/Monad.hs b/saw-core-rocq/src/SAWCoreRocq/Monad.hs index 110758baec..7ff5aa0568 100644 --- a/saw-core-rocq/src/SAWCoreRocq/Monad.hs +++ b/saw-core-rocq/src/SAWCoreRocq/Monad.hs @@ -58,21 +58,21 @@ ppTranslationError sc err = do pure $ PPS.renderText ppopts $ msg <+> tm' data TranslationConfiguration = TranslationConfiguration - { constantRenaming :: [(String, String)] + { constantRenaming :: [(Text, Text)] -- ^ A map from 'ImportedName's of constants to names that should be used to -- realize them in Rocq; this is generally used to map cryptol operators like -- @||@ or @&&@ to nicer names in Rocq, but works on any imported names - , constantSkips :: [String] + , constantSkips :: [Text] -- ^ A list of 'ImportedName's to skip, i.e., not translate when encountered , monadicTranslation :: Bool -- ^ Whether to wrap everything in a free monad construction. -- - Advantage: fixpoints can be readily represented -- - Disadvantage: pure computations look more gnarly - , postPreamble :: String + , postPreamble :: Text -- ^ Text to be concatenated at the end of the Rocq preamble, before the code -- generated by the translation. Usually consists of extra file imports, -- module imports, scopes openings. - , vectorModule :: String + , vectorModule :: Text -- ^ all vector operations will be prepended with this module name, i.e. -- ".append", etc. So that it can be retargeted easily. -- Current provided options are: diff --git a/saw-core-rocq/src/SAWCoreRocq/Rocq.hs b/saw-core-rocq/src/SAWCoreRocq/Rocq.hs index f7e3c7d6d4..fa64b731c9 100644 --- a/saw-core-rocq/src/SAWCoreRocq/Rocq.hs +++ b/saw-core-rocq/src/SAWCoreRocq/Rocq.hs @@ -22,7 +22,8 @@ module SAWCoreRocq.Rocq ( ) where import Data.String.Interpolate (i) -import qualified Data.Text as Text +--import qualified Data.Text as Text +import Data.Text (Text) import Prelude hiding (fail) import Prettyprinter @@ -101,8 +102,8 @@ translateCryptolModule sc nm configuration globalDecls m = do translated <- CMT.translateCryptolModule sc configuration globalDecls m return $ Rocq.prettyDecl . Rocq.Section (escapeIdent nm) <$> translated --- | Extract out the 'String' name of a declaration in a SAW core module -moduleDeclName :: ModuleDecl -> Maybe String -moduleDeclName (TypeDecl (DataType { dtName })) = Just (Text.unpack (toShortName (nameInfo dtName))) -moduleDeclName (DefDecl (Def { defName })) = Just (Text.unpack (toShortName (nameInfo defName))) +-- | Extract out the 'Text' name of a declaration in a SAW core module +moduleDeclName :: ModuleDecl -> Maybe Text +moduleDeclName (TypeDecl (DataType { dtName })) = Just (toShortName (nameInfo dtName)) +moduleDeclName (DefDecl (Def { defName })) = Just (toShortName (nameInfo defName)) moduleDeclName InjectCodeDecl{} = Nothing diff --git a/saw-core-rocq/src/SAWCoreRocq/SAWModule.hs b/saw-core-rocq/src/SAWCoreRocq/SAWModule.hs index 0584a7b5f9..2395f87794 100644 --- a/saw-core-rocq/src/SAWCoreRocq/SAWModule.hs +++ b/saw-core-rocq/src/SAWCoreRocq/SAWModule.hs @@ -65,7 +65,7 @@ translateCtor inductiveParameters (Ctor {..}) = do ImportedName{} -> pure Nothing let constructorName = case maybe_constructorName of -- Drop qualifiers from constructor name - Just (Rocq.Ident n) -> Rocq.Ident (reverse (takeWhile (/= '.') (reverse n))) + Just (Rocq.Ident n) -> Rocq.Ident $ Text.takeWhileEnd (/= '.') n Nothing -> error "translateCtor: unexpected translation for constructor" constructorType <- -- Unfortunately, `ctorType` qualifies the inductive type's name in the @@ -87,12 +87,12 @@ translateDataType (DataType {..}) = case nameInfo dtName of ModuleIdentifier dtIdent -> atDefSite <$> findSpecialTreatment dtIdent >>= \case - DefPreserve -> translateNamed $ Rocq.Ident (identName dtIdent) + DefPreserve -> translateNamed $ Rocq.Ident (Text.pack $ identName dtIdent) DefRename targetName -> translateNamed $ targetName DefReplace str -> return $ Rocq.Snippet str DefSkip -> return $ skipped dtIdent ImportedName{} -> - translateNamed $ Rocq.Ident (Text.unpack (toShortName (nameInfo dtName))) + translateNamed $ Rocq.Ident $ toShortName (nameInfo dtName) where translateNamed :: ModuleTranslationMonad m => Rocq.Ident -> m Rocq.Decl translateNamed name = do @@ -131,15 +131,15 @@ translateDataType (DataType {..}) = _mapped :: Ident -> Ident -> Rocq.Decl _mapped sawIdent newIdent = - Rocq.Comment $ show sawIdent ++ " is mapped to " ++ show newIdent + Rocq.Comment $ identText sawIdent <> " is mapped to " <> identText newIdent skipped' :: NameInfo -> Rocq.Decl skipped' nmi = - Rocq.Comment $ show (toAbsoluteName nmi) ++ " was skipped" + Rocq.Comment $ "\"" <> toAbsoluteName nmi <> "\" was skipped" skipped :: Ident -> Rocq.Decl skipped sawIdent = - Rocq.Comment $ show sawIdent ++ " was skipped" + Rocq.Comment $ "\"" <> identText sawIdent <> "\" was skipped" translateDef :: ModuleTranslationMonad m => Def -> m Rocq.Decl translateDef (Def {..}) = {- trace ("translateDef " ++ show defIdent) $ -} do @@ -149,7 +149,7 @@ translateDef (Def {..}) = {- trace ("translateDef " ++ show defIdent) $ -} do where translateAccordingly :: ModuleTranslationMonad m => DefSiteTreatment -> m Rocq.Decl - translateAccordingly DefPreserve = translateNamed $ Rocq.Ident (Text.unpack (toShortName (nameInfo defName))) + translateAccordingly DefPreserve = translateNamed $ Rocq.Ident $ toShortName (nameInfo defName) translateAccordingly (DefRename targetName) = translateNamed $ targetName translateAccordingly (DefReplace str) = return $ Rocq.Snippet str translateAccordingly DefSkip = return $ skipped' (nameInfo defName) diff --git a/saw-core-rocq/src/SAWCoreRocq/SpecialTreatment.hs b/saw-core-rocq/src/SAWCoreRocq/SpecialTreatment.hs index 1ad2b48dc7..5159af99e9 100644 --- a/saw-core-rocq/src/SAWCoreRocq/SpecialTreatment.hs +++ b/saw-core-rocq/src/SAWCoreRocq/SpecialTreatment.hs @@ -29,6 +29,7 @@ import qualified Data.Map as Map import Data.Map (Map) import Data.String.Interpolate (i) import qualified Data.Text as Text +import Data.Text (Text) import Prelude hiding (fail) import Text.Encoding.Z (zEncodeString) @@ -47,7 +48,7 @@ data DefSiteTreatment -- and otherwise directly translate the associated SAWCore declaration. DefRename Rocq.Ident | -- | Replace the declaration of the identifier with the given text. - DefReplace String + DefReplace Text -- | Skip the declartion of the identifier altogether. | DefSkip @@ -102,7 +103,7 @@ findSpecialTreatment ident = do { atDefSite = DefPreserve , atUseSite = UsePreserve } - pure $ Map.findWithDefault defaultTreatment (identName ident) moduleMap + pure $ Map.findWithDefault defaultTreatment (Text.pack $ identName ident) moduleMap -- | Use `mapsTo` for identifiers whose definition has a matching definition -- already on the Rocq side. As such, their definition can be skipped, and use @@ -127,7 +128,7 @@ mapsToExpl targetModule targetName = IdentSpecialTreatment -- depended upon by following code in the same module. Such primitives can -- therefore *neither* be defined a priori, *nor* a posteriori, and must be -- realized where they were originally declared. -realize :: String -> IdentSpecialTreatment +realize :: Text -> IdentSpecialTreatment realize code = IdentSpecialTreatment { atDefSite = DefReplace code , atUseSite = UsePreserve @@ -202,20 +203,20 @@ polyListModule = mkModuleName ["PolyList"] sawVectorDefinitionsModule :: TranslationConfiguration -> ModuleName sawVectorDefinitionsModule (TranslationConfiguration {..}) = - mkModuleName [Text.pack vectorModule] + mkModuleName [vectorModule] preludeExtraModule :: ModuleName preludeExtraModule = mkModuleName ["SAWCorePreludeExtra"] specialTreatmentMap :: TranslationConfiguration -> - Map ModuleName (Map String IdentSpecialTreatment) + Map ModuleName (Map Text IdentSpecialTreatment) specialTreatmentMap configuration = Map.fromList $ over _1 (mkModuleName . (: [])) <$> [ ("Cryptol", cryptolPreludeSpecialTreatmentMap) , ("Prelude", sawCorePreludeSpecialTreatmentMap configuration) ] -cryptolPreludeSpecialTreatmentMap :: Map String IdentSpecialTreatment +cryptolPreludeSpecialTreatmentMap :: Map Text IdentSpecialTreatment cryptolPreludeSpecialTreatmentMap = Map.fromList $ [] ++ [ ("Num_rec", rename "Num__rec") @@ -231,7 +232,7 @@ cryptolPreludeSpecialTreatmentMap = Map.fromList $ [] -- reserved keyword in Rocq), so that primitives' and axioms' types can be -- copy-pasted as is on the Rocq side. sawCorePreludeSpecialTreatmentMap :: TranslationConfiguration -> - Map String IdentSpecialTreatment + Map Text IdentSpecialTreatment sawCorePreludeSpecialTreatmentMap configuration = let vectorsModule = sawVectorDefinitionsModule configuration in Map.fromList $ @@ -436,6 +437,8 @@ sawCorePreludeSpecialTreatmentMap configuration = -- zip must be realized in-place because it both depends on definitions and is -- used by other definitions in the same file, so it can neither be pre- nor -- post-defined. + -- + -- XXX 20260807: like what? don't see anything , ("zip", realize zipSnippet) -- cannot map directly to Vector.t because arguments are in a different order , ("Vec", mapsTo vectorsModule "Vec") @@ -559,13 +562,16 @@ sawCorePreludeSpecialTreatmentMap configuration = escapeIdent :: Rocq.Ident -> Rocq.Ident escapeIdent (Rocq.Ident str) - | all okChar str = Rocq.Ident str - | otherwise = Rocq.Ident ("Op_" ++ zEncodeString str) + | Text.all okChar str = Rocq.Ident str + | otherwise = Rocq.Ident $ "Op_" <> encodedStr where - okChar x = isAlphaNum x || x `elem` ("_'" :: String) + okChar x = isAlphaNum x || x == '_' || x == '\'' + encodedStr = Text.pack $ zEncodeString $ Text.unpack str -zipSnippet :: String -zipSnippet = [i| +-- XXX why is this here? There are already two copies of it in the +-- handwritten files. +zipSnippet' :: String +zipSnippet' = [i| Fixpoint zip (a b : sort 0) (m n : nat) (xs : Vec m a) (ys : Vec n b) : Vec (minNat m n) (a * (b * unit)) := match @@ -584,3 +590,8 @@ Fixpoint zip (a b : sort 0) (m n : nat) (xs : Vec m a) (ys : Vec n b) end . |] + +-- XXX the docs for this [i|] thing say it can produce Text, but it +-- does not work. +zipSnippet :: Text +zipSnippet = Text.pack zipSnippet' diff --git a/saw-core-rocq/src/SAWCoreRocq/Term.hs b/saw-core-rocq/src/SAWCoreRocq/Term.hs index abd6605c6e..b3b1792c36 100644 --- a/saw-core-rocq/src/SAWCoreRocq/Term.hs +++ b/saw-core-rocq/src/SAWCoreRocq/Term.hs @@ -45,6 +45,8 @@ import Data.Map (Map) import qualified Data.Set as Set import Data.Set (Set) import qualified Data.Text as Text +import Data.Text (Text) +import Text.Read (readMaybe) import Prelude hiding (fail) import Prettyprinter @@ -153,14 +155,19 @@ localTR f = -- | Take a Rocq identifier that ends in a number (i.e., a sequence of digits) -- and add 1 to that number, viewing an identifier with no trailing number as -- ending in 0 +-- +-- Note 20260807: that seems to be a lie, the output actually starts at 1. nextVariant :: Rocq.Ident -> Rocq.Ident -nextVariant (Rocq.Ident s) = Rocq.Ident (reverse (go (reverse s))) +nextVariant (Rocq.Ident s) = Rocq.Ident $ paste $ incr $ peel s where - go :: String -> String - go (c : cs) - | c == '9' = '0' : go cs - | isDigit c = succ c : cs - go cs = '1' : cs + peel str = (Text.dropWhileEnd isDigit str, Text.takeWhileEnd isDigit str) + incr (str, num) = + let num' = case readMaybe (Text.unpack num) of + Nothing -> 1 :: Int + Just n -> n + 1 + in + (str, Text.pack $ show num') + paste (str, num) = str <> num -- | Find an fresh, as-yet-unused variant of the given Rocq identifier freshVariant :: TermTranslationMonad m => Rocq.Ident -> m Rocq.Ident @@ -178,7 +185,7 @@ withUsedRocqIdent ident m = -- | Translate a local name from a saw-core binder into a fresh Rocq identifier translateLocalIdent :: TermTranslationMonad m => LocalName -> m Rocq.Ident -translateLocalIdent x = freshVariant (escapeIdent (Rocq.Ident (Text.unpack x))) +translateLocalIdent x = freshVariant (escapeIdent (Rocq.Ident x)) -- | Generate a fresh, unused Rocq identifier from a SAW core name and mark it as -- unavailable in the supplied translation computation @@ -224,7 +231,7 @@ reservedIdents :: Set Rocq.Ident reservedIdents = Set.fromList $ map Rocq.Ident $ - concatMap words $ + concatMap Text.words $ [ "_ Axiom CoFixpoint Definition Fixpoint Hypothesis IF Parameter Prop" , "SProp Set Theorem Type Variable as at by cofix discriminated else" , "end exists exists2 fix for forall fun if in lazymatch let match" @@ -280,11 +287,12 @@ runTermTranslationMonad configuration mname mm globalDecls localEnv = }) -- | Return a Rocq term for an error computation with the given string message -errorTermM :: TermTranslationMonad m => String -> m Rocq.Term +errorTermM :: TermTranslationMonad m => Text -> m Rocq.Term errorTermM str = return $ Rocq.App (Rocq.Var "error") [Rocq.StringLit str] qualify :: ModuleName -> Rocq.Ident -> Rocq.Ident -qualify m (Rocq.Ident i) = Rocq.Ident (Text.unpack (Text.intercalate "." (moduleNamePieces m)) ++ "." ++ i) +qualify m (Rocq.Ident i) = + Rocq.Ident $ Text.intercalate "." (moduleNamePieces m) <> "." <> i -- | Translate an 'Ident' with a given list of arguments to a Rocq term, using -- any special treatment for that identifier and qualifying it if necessary @@ -295,7 +303,7 @@ translateIdentWithArgs i args = do if Just (identModule ident) == currentModuleName then base else qualify (translateModuleName (identModule ident)) base where - base = escapeIdent (Rocq.Ident (identName ident)) + base = escapeIdent (Rocq.Ident (Text.pack $ identName ident)) specialTreatment <- findSpecialTreatment i applySpecialTreatment identToRocq (atUseSite specialTreatment) @@ -315,13 +323,13 @@ translateIdentWithArgs i args = do do f <- macroFun <$> mapM translateTerm m_args Rocq.App f <$> mapM translateTerm args' applySpecialTreatment _identToRocq (UseMacro n _) = - errorTermM (unwords - [ "Identifier" - , show i - , "not applied to required number of args, which is" - , show n - ] - ) + let i' = Text.pack $ show i + n' = Text.pack $ show n + in + -- XXX shouldn't this fail and report an error rather than stuff an + -- error in the output? + errorTermM ("Identifier " <> i' <> + "not applied to required number of args, which is " <> n') -- | Helper for 'translateIdentWithArgs' with no arguments translateIdent :: TermTranslationMonad m => Ident -> m Rocq.Term @@ -340,7 +348,7 @@ translateConstant nm = do -- First, apply the constant renaming to get the name for this constant configuration <- asks translationConfiguration -- TODO short name seems wrong - let nm_str = Text.unpack $ toShortName $ nameInfo nm + let nm_str = toShortName $ nameInfo nm let renamed = escapeIdent $ Rocq.Ident $ fromMaybe nm_str $ lookup nm_str $ constantRenaming configuration @@ -378,7 +386,7 @@ translateConstant nm = translateIdentToIdent :: TermTranslationMonad m => Ident -> m (Maybe Rocq.Ident) translateIdentToIdent i = (atUseSite <$> findSpecialTreatment i) >>= \case - UsePreserve -> return $ Just (qualify translatedModuleName (Rocq.Ident (Text.unpack (identBaseName i)))) + UsePreserve -> return $ Just (qualify translatedModuleName (Rocq.Ident (identBaseName i))) UseRename targetModule targetName _ -> return $ Just $ qualify (fromMaybe translatedModuleName targetModule) targetName UseMacro _ _ -> return Nothing @@ -401,12 +409,13 @@ flatTermFToExpr tf = -- traceFTermF "flatTermFToExpr" tf $ ModuleIdentifier ident -> translateIdentToIdent ident ImportedName{} -> pure Nothing case maybe_d_trans of - Just (Rocq.Ident i) -> return $ Rocq.ExplVar (Rocq.Ident (i ++ "_rect")) + Just (Rocq.Ident i) -> return $ Rocq.ExplVar (Rocq.Ident (i <> "_rect")) Nothing -> do -- XXX: this should really use ppName but that's a can of worms - let d' = Text.unpack $ toAbsoluteName (nameInfo d) - errorTermM ("Recursor for " ++ d' ++ - " cannot be translated because the datatype " ++ + -- XXX: shouldn't this fail rather than issue an error into the output? + let d' = toAbsoluteName (nameInfo d) + errorTermM ("Recursor for " <> d' <> + " cannot be translated because the datatype " <> "is mapped to an arbitrary Rocq term") Sort s _h -> pure (Rocq.Sort (translateSort s)) @@ -419,7 +428,7 @@ flatTermFToExpr tf = -- traceFTermF "flatTermFToExpr" tf $ elems <- Vector.toList <$> mapM translateTerm vec -- NOTE: with VectorNotations, this is actually a Rocq vector literal return $ Rocq.List elems - StringLit s -> pure (Rocq.Scope (Rocq.StringLit (Text.unpack s)) "string") + StringLit s -> pure (Rocq.Scope (Rocq.StringLit s) "string") -- | Run a translation in the top-level translation state with no free SAW @@ -664,7 +673,7 @@ translateTermUnshared t = case Map.lookup nm nenv of Just ident -> pure (Rocq.Var ident) Nothing -> - do let nm_str = Text.unpack $ vnName nm + do let nm_str = vnName nm let ident = escapeIdent $ Rocq.Ident $ nm_str pure (Rocq.Var ident)