Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
7421332
some fixes for upcoming F* branch nik_smt_univs_2025
nikswamy Jan 16, 2025
67b58f8
merge in master
nikswamy Sep 26, 2025
62e3056
tweaking some proofs for univs branch
nikswamy Sep 26, 2025
e459d0b
Merge remote-tracking branch 'origin/master' into _nik_smt_univs_2025
nikswamy Sep 26, 2025
bc1affe
upgrade to F* universes branch in progress
nikswamy Sep 30, 2025
92766b0
fixup CBOR.Pulse.API.Det.Common
nikswamy Sep 30, 2025
362b6ba
a proof setting tweak
nikswamy Sep 30, 2025
044e922
some admits in CDDL.Pulse.Serialize.MapGroup
nikswamy Sep 30, 2025
1a68d26
fix up proofs in COSE to work again with F* nik_smt_univs_2025
nikswamy Oct 4, 2025
a95da9b
Merge remote-tracking branch 'origin/master' into _nik_smt_univs_2025
nikswamy Oct 4, 2025
ea8104c
Revert "Update hashes"
tahina-pro Nov 18, 2025
7670966
Merge branch '_taramana_244' into _nik_smt_univs_2025
tahina-pro Nov 18, 2025
3642275
use the right Z3 version in VSCode
tahina-pro Nov 18, 2025
a2ad34b
partial F*, Karamel, Pulse upgrade
tahina-pro Nov 20, 2025
c4fbe39
specify some missing universes
tahina-pro Nov 19, 2025
f174fa2
split continuation boolean pure condition in loop invariants
tahina-pro Nov 19, 2025
744a9fa
ADMIT: Cannot properly solve `exists* (x: unit)`
tahina-pro Nov 19, 2025
d12f324
ADMIT: Pulse OOM in impl_serialize_map_zero_or_more_iterator_gen
tahina-pro Nov 19, 2025
b9d339c
WHY WHY WHY do I need to help Pulse with middle Trade.trans arguments?
tahina-pro Nov 19, 2025
3b97d8f
various rewrites and other Pulse unification issues
tahina-pro Nov 19, 2025
c42bf83
LowParse.Pulse rlimit
tahina-pro Nov 20, 2025
2a1a624
Revert "partial F*, Karamel, Pulse upgrade"
tahina-pro Nov 20, 2025
679a11e
full F*, Karamel, Pulse upgrade
tahina-pro Nov 20, 2025
f771f78
WHY WHY WHY do Pulse functions with functional types no longer typech…
tahina-pro Nov 20, 2025
80d3b04
WIP CDDL generalized serialization
tahina-pro Nov 25, 2025
ac0abdc
cbor_det_parse_map
tahina-pro Dec 4, 2025
6a3ace5
Merge branch 'master' of github.com:project-everest/everparse into _t…
tahina-pro Dec 4, 2025
a0893b0
Bump hashes (including Pulse fix)
mtzguido Dec 8, 2025
320a5ed
revert to Z3 4.13.3
tahina-pro Dec 11, 2025
e447f75
VS config for LowParse
tahina-pro Dec 11, 2025
0e66d24
binder -> binding
tahina-pro Dec 11, 2025
c741512
rlimit
tahina-pro Dec 11, 2025
1c3866f
fix VS config for src/cddl
tahina-pro Dec 12, 2025
0220bc3
induction principles for cbor_map
tahina-pro Dec 13, 2025
b136c76
add postcondition on map length on cbor_det_parse_map
tahina-pro Dec 13, 2025
b3607a8
rlimit
tahina-pro Dec 13, 2025
ec44508
specify generalized CDDL map group serialization operations
tahina-pro Dec 13, 2025
e7c2092
move some CDDL.Spec.MapGroup definitions from fsti to fst
tahina-pro Dec 15, 2025
035d102
add a few admits in Serialize.ArrayGroup/MapGroup, to be replaced wit…
tahina-pro Dec 15, 2025
d11e604
rlimit
tahina-pro Dec 15, 2025
d5df53e
advance F*, Karamel, Pulse
tahina-pro Dec 15, 2025
7c9ad2a
move LowParse.Spec.VCList.bare_serialize_vclist_correct from the .fst…
tahina-pro Dec 15, 2025
3f8f7d6
rlimit
tahina-pro Dec 15, 2025
94d1ca2
Merge branch 'master' of github.com:project-everest/everparse into _t…
tahina-pro Dec 16, 2025
4451abd
Merge branch '_nik_smt_univs_2025' of github.com:project-everest/ever…
tahina-pro Dec 16, 2025
3ecbcec
(TEMP) EverCDDL: add an option to disable NBE during extraction
tahina-pro Dec 17, 2025
d7e9a02
Merge branch '_taramana_smt_univs_2025' of github.com:tahina-pro/quac…
tahina-pro Jan 27, 2026
4ef6387
Merge branch 'master' of github.com:project-everest/everparse into _n…
tahina-pro Jan 27, 2026
82e5b16
add a clean rule for Rust nondet
tahina-pro Jan 27, 2026
e27e3d7
enable proof_recovery
tahina-pro Jan 28, 2026
feb9f76
advance F*, Karamel, Pulse
tahina-pro Jan 28, 2026
12d05c9
WIP
tahina-pro Jan 28, 2026
860ddba
WIP
tahina-pro Jan 28, 2026
fd7f9cd
some proof adjustments
tahina-pro Jan 30, 2026
6c3c14a
Revert "specify generalized CDDL map group serialization operations"
tahina-pro Jan 30, 2026
c9d1a71
COSE fixes: prettify tactic no longer generates single-field record t…
tahina-pro Feb 2, 2026
4d49da4
Revert "ADMIT: Pulse OOM in impl_serialize_map_zero_or_more_iterator_…
tahina-pro Feb 2, 2026
15b73e4
fix DPE with new Pulse
tahina-pro Feb 2, 2026
b8038ea
revert Karamel to the one used by EverParse master
tahina-pro Feb 2, 2026
754e19d
ADMIT serialization of nonempty tables
tahina-pro Feb 2, 2026
14a5b01
CBOR, COSE snapshots
tahina-pro Feb 3, 2026
5b09bf5
fix CBOR tests wrt new Pulse
tahina-pro Feb 3, 2026
9b0c657
Revert "WIP CDDL generalized serialization"
tahina-pro Feb 3, 2026
837a5ab
rlimit
tahina-pro Feb 3, 2026
92b55ed
Revert "ADMIT: Cannot properly solve `exists* (x: unit)`"
tahina-pro Feb 3, 2026
9eed864
revert cbor_parse_det_map, etc.
tahina-pro Feb 3, 2026
665679f
Revert "cbor_det_parse_map"
tahina-pro Feb 3, 2026
980568d
change a z3 seed
tahina-pro Feb 3, 2026
4a49880
clean up one more 3d test
tahina-pro Feb 3, 2026
6fca1e0
do not log queries
tahina-pro Feb 3, 2026
02ced06
Revert "WHY WHY WHY do Pulse functions with functional types no longe…
tahina-pro Feb 3, 2026
4012667
do not include the generated Makefile for `clean`
tahina-pro Feb 3, 2026
b049f8a
do not print directory when using `eval $(make -s env)`
tahina-pro Feb 9, 2026
5d4ba6a
try an alternative to FStarLang/pulse#539 by @mtzguido
tahina-pro Feb 9, 2026
3c93ba9
pin setuptools to 81.0.0 because of pypa/setuptools#5007
tahina-pro Feb 9, 2026
7751677
Merge branch 'master' of github.com:project-everest/everparse into _n…
tahina-pro Feb 11, 2026
7f02f85
(TEMP) freeze Karamel until FStarLang/karamel#676 is fixed
tahina-pro Feb 10, 2026
f5639d3
nightly: reset scheduled branch to `master`
tahina-pro Feb 11, 2026
a918832
Update hashes
dzomo Feb 11, 2026
4d3fcf6
Merge branch 'master' into _nik_smt_univs_2025
tahina-pro Feb 14, 2026
31ced29
advance Pulse
tahina-pro Feb 16, 2026
2808d47
protect some Pulse keywords behind `evercddl_`
tahina-pro Feb 16, 2026
56a2598
COSE snapshot
tahina-pro Feb 16, 2026
a76ccc2
label -> evercddl_label
tahina-pro Feb 16, 2026
ceeb6d6
Merge branch 'master' into _nik_smt_univs_2025
tahina-pro Feb 16, 2026
57f9624
Merge branch 'master' into _nik_smt_univs_2025
tahina-pro Feb 17, 2026
9d7d7eb
Update hashes
dzomo Feb 18, 2026
e7b4f85
Update hashes
dzomo Feb 22, 2026
7069d00
Merge branch 'master' into _nik_smt_univs_2025
tahina-pro Feb 23, 2026
82a8a6d
Update hashes
dzomo Feb 25, 2026
f2c08fd
Merge branch 'master' of github.com:project-everest/everparse into _n…
tahina-pro Feb 26, 2026
f978aa0
Revert proof_recovery and fix rlimits
tahina-pro Feb 28, 2026
74b5688
remove unnecessary files
tahina-pro Feb 28, 2026
c36b37b
rlimit
tahina-pro Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ jobs:
with:
submodules: true
fetch-depth: 0
ref: ${{ github.event_name == 'schedule' && '_nik_smt_univs_2025' || '' }}
ref: ${{ github.event_name == 'schedule' && 'master' || '' }}
- name: Record base ref
run: |
echo "base_branch=${{ github.event_name == 'schedule' && '_nik_smt_univs_2025' || github.ref_name }}" > base_ref.txt
echo "base_branch=${{ github.event_name == 'schedule' && 'master' || github.ref_name }}" > base_ref.txt
echo "base_sha=$(git rev-parse HEAD)" >> base_ref.txt
- name: Set up git
run: |
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,15 @@ Then, whenever you make a change in your clones:
Then, in EverParse, `make` will automatically rebuild F\*, Karamel and
Pulse from your clones with your patches.

## Using a specific branch of F\*, Karamel, Pulse etc.

1. Run `make -C opt FStar pulse karamel` to clone the default branches of those repositories

2. In the cloned directories, switch to your branch, e.g., `git checkout <mybranch>`

3. Then run `make -C opt snapshot` to record the hashes you intend to use


## Using an existing opam root, F\*, etc.

If you want to use existing dependencies instead of letting EverParse
Expand Down
7 changes: 4 additions & 3 deletions deps.Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export EVERPARSE_OPT_PATH := $(shell cygpath -m $(EVERPARSE_OPT_PATH))
NO_PULSE := 1
endif

Z3_VERSION := 4.13.3
EVERPARSE_Z3_VERSION ?= 4.13.3

ifeq (1,$(EVERPARSE_USE_MY_DEPS))
export EVERPARSE_USE_OPAMROOT:=1
Expand Down Expand Up @@ -51,7 +51,7 @@ NEED_FSTAR :=
ifneq (1,$(EVERPARSE_USE_FSTAR_EXE))
export FSTAR_EXE := $(EVERPARSE_OPT_PATH)/FStar/out/bin/fstar.exe
NEED_FSTAR := $(EVERPARSE_OPT_PATH)/FStar.done
z3_exe := $(shell $(FSTAR_EXE) --locate_z3 \$(Z3_VERSION) 2>/dev/null)
z3_exe := $(shell $(FSTAR_EXE) --locate_z3 \$(EVERPARSE_Z3_VERSION) 2>/dev/null)
ifneq (0,$(.SHELLSTATUS))
z3_exe :=
endif
Expand All @@ -74,7 +74,7 @@ with_opam := eval "$$($(EVERPARSE_OPT_PATH)/opam-env.sh --shell)" &&

NEED_Z3 :=
ifeq (,$(z3_exe))
z3_exe := $(shell which z3-$(Z3_VERSION))
z3_exe := $(shell which z3-$(EVERPARSE_Z3_VERSION))
ifneq (0,$(.SHELLSTATUS))
z3_exe :=
endif
Expand Down Expand Up @@ -170,6 +170,7 @@ ifeq ($(OS),Windows_NT)
else
@echo export EVERPARSE_HOME=$(CURDIR)
endif
@echo export EVERPARSE_Z3_VERSION=$(EVERPARSE_Z3_VERSION)
@echo export PATH=\"$(z3_dir):'$$PATH'\"

.PHONY: env
Expand Down
2 changes: 1 addition & 1 deletion fstar.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ set -e
unset CDPATH
EVERPARSE_HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$EVERPARSE_HOME"/env.sh
exec "$FSTAR_EXE" --include "$KRML_HOME/krmllib" --include "$KRML_HOME/krmllib/obj" --include "$PULSE_HOME/lib/pulse" "$@"
exec "$FSTAR_EXE" --z3version $EVERPARSE_Z3_VERSION --include "$KRML_HOME/krmllib" --include "$KRML_HOME/krmllib/obj" --include "$PULSE_HOME/lib/pulse" "$@"
2 changes: 1 addition & 1 deletion opt/advance.Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
FStar_hash := origin/master
karamel_hash := origin/master
karamel_hash := fb36fecb552c9fb202beb38a6c5a732c3f2cd49f
Copy link
Member Author

@tahina-pro tahina-pro Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7f02f85 should be reverted once FStarLang/karamel#676 is solved FStarLang/karamel#681 is merged

pulse_hash := origin/main
4 changes: 2 additions & 2 deletions opt/hashes.Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
FStar_hash := 1cff8d796deed8834926389a986d015498780041
FStar_hash := b829d21f1d68051caeff664f515d17bdb84ad203
karamel_hash := fb36fecb552c9fb202beb38a6c5a732c3f2cd49f
pulse_hash := a1a94bae512a7ca56fd03ae8da5154409a1cca06
pulse_hash := 6e5c85213db9ff97ded29e136210ce092d573f0e
4 changes: 2 additions & 2 deletions src/3d/prelude/EverParse3d.Actions.Base.fst
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ let validate_ret
= fun ctxt error_handler_fn input input_length start_position ->
start_position

#push-options "--z3rlimit 32"
#push-options "--z3rlimit 128"

module LPC = LowParse.Spec.Combinators

Expand Down Expand Up @@ -514,7 +514,7 @@ let validate_dep_pair

#pop-options

#push-options "--z3rlimit 128"
#push-options "--z3rlimit 512"
#restart-solver

inline_for_extraction noextract
Expand Down
4 changes: 2 additions & 2 deletions src/3d/tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ specialize_test2:
.PHONY: specialize_tagged_union_array
specialize_tagged_union_array:
+$(MAKE) -C $@

batch-test-negative: $(addsuffix .negtest,$(wildcard FAIL*.3d))

%.3d.negtest: %.3d
Expand Down Expand Up @@ -167,6 +167,6 @@ clean-files:

.PHONY: clean-files

clean: clean-files specialize_test.clean specialize_test2.clean probe.clean extern.clean exttype.clean funptr.clean ifdefs.clean iter/coarse.clean iter/fine.clean modules.clean output_types.clean static.clean tcpip.clean
clean: clean-files specialize_test.clean specialize_test2.clean probe.clean extern.clean exttype.clean funptr.clean ifdefs.clean iter/coarse.clean iter/fine.clean modules.clean output_types.clean static.clean tcpip.clean specialize_tagged_union_array.clean

.PHONY: all batch-test batch-test-negative %.negtest clean batch-cleanup-test inplace-hash-test modules tcpip extern %.interpret batch-interpret-test static funptr ifdefs
6 changes: 6 additions & 0 deletions src/ASN1/ASN1.Spec.Interpreter.fst
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ let auto_asn1_sequence_any_t_equiv' (items : list asn1_gen_item_k) (suffix_t : T
[SMTPat (asn1_sequence_any_t items suffix_t)]
= asn1_sequence_any_t_equiv' items suffix_t

#push-options "--z3rlimit 20"

let rec dasn1_terminal_as_parser (k : asn1_terminal_k) : asn1_weak_parser (asn1_terminal_t k) =
parse_debug #(asn1_terminal_t k) #(asn1_weak_parser_kind) "asn1_terminal_as_parser"
(match k with
Expand Down Expand Up @@ -200,6 +202,10 @@ and dasn1_decorated_as_parser_twin
let p : asn1_weak_parser (asn1_decorated_pure_t item) = weaken _ ((dasn1_terminal_as_parser k) `parse_filter` is_valid) in
Mkgendcparser item (parse_asn1_ILC id #(ASN1_RESTRICTED_TERMINAL k is_valid) p) (parse_asn1_ILC_twin id #(ASN1_RESTRICTED_TERMINAL k is_valid) p)

#pop-options


#push-options "--z3rlimit 20"

let rec asn1_terminal_as_parser (k : asn1_terminal_k) : asn1_weak_parser (asn1_terminal_t k) =
match k with
Expand Down
11 changes: 11 additions & 0 deletions src/ASN1/ASN1.Spec.Sequence.fst
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ let and_then_cases_injective_some_elim
(ensures (x1 == x2))
= ()

#push-options "--z3rlimit 20"

let parse_asn1_sequence_item_twin_cases_injective
(item : gen_decorated_parser_twin)
: Lemma
Expand Down Expand Up @@ -186,6 +188,7 @@ let parse_asn1_sequence_item_twin_cases_injective
and_then_cases_injective_elim fp id1 id2 b1 b2
)

#pop-options

(* FIXME: using option type as the state might cause problems for extracting the validator *)

Expand Down Expand Up @@ -266,6 +269,8 @@ let make_asn1_sequence_parser_body_twin
//assert (forall id. parse_defaultable_injective_cond_prop (generate_defaultable_items itemtwins) (ret id));
ret

#push-options "--z3rlimit 10"

let make_asn1_sequence_parser_body_twin_and_then_cases_injective
(itemtwins : list (gen_decorated_parser_twin) {Cons? itemtwins})
// (pf : (asn1_sequence_k_wf (List.map project_set_decorator itemtwins)))
Expand Down Expand Up @@ -353,6 +358,8 @@ let make_asn1_sequence_parser_body_twin_and_then_cases_injective
nondep_then_eq p' p2 b2;
and_then_cases_injective_some_elim (ploop tl) id1 id2 b1 b2))

#pop-options

let make_asn1_sequence_parser_body_twin_spec
(#itemtwins : list (gen_decorated_parser_twin) {Cons? itemtwins})
(pbodytwin : asn1_id_t -> (asn1_weak_parser (asn1_sequence_t (List.map (Mkgendcparser?.d) itemtwins))))
Expand All @@ -379,6 +386,8 @@ let make_asn1_sequence_parser_body
| _ -> and_then_defaultable p pbodytwin ov) in
weaken asn1_weak_parser_kind (p `and_then` pbodytwin)

#push-options "--z3rlimit 10"

let make_asn1_sequence_parser_body_and_then_cases_injective
(#itemtwins : list (gen_decorated_parser_twin) {Cons? itemtwins})
// (pf : (asn1_sequence_k_wf (List.map project_set_decorator itemtwins)))
Expand All @@ -400,6 +409,8 @@ let make_asn1_sequence_parser_body_and_then_cases_injective
and_then_eq p2 p' b2;
and_then_cases_injective_elim p' v1 v2 b1 b2)

#pop-options

let make_asn1_sequence_parser_body_spec
(itemtwins : list (gen_decorated_parser_twin))
(pbody : (l : list (gen_decorated_parser_twin) {Cons? l /\ (l << itemtwins \/ (l == itemtwins /\ 0 << 1))}) -> (st : option asn1_id_t) -> asn1_weak_parser (asn1_sequence_t (List.map (Mkgendcparser?.d) l)))
Expand Down
12 changes: 6 additions & 6 deletions src/ASN1/ASN1.X509.fst
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
module ASN1.X509
#push-options "--split_queries no --fuel 2 --ifuel 0"

module U32 = FStar.UInt32
module List = FStar.List.Tot
Expand Down Expand Up @@ -302,11 +303,12 @@ let id_pe = id_pkix /+ 1
let id_pe_authorityInformationAccess = id_pe /+ 1

//Warning: Partly using the mitls spec which is loosened from rfc5280

#push-options "--fuel 3 --ifuel 1"
let mk_expansion (critical : asn1_gen_item_k) (#s : _) (value : asn1_k s)
(pf : squash (asn1_sequence_k_wf [proj2_of_3 critical; (Set.singleton octetstring_id, PLAIN)]))
= let items = [critical; "extnValue" *^ (PLAIN ^: (ASN1_ILC octetstring_id (ASN1_PREFIXED value)))] in
mk_gen_items items pf
#pop-options

let critical_field
= mk_default_field asn1_boolean false
Expand Down Expand Up @@ -562,8 +564,7 @@ let extension
let extensions
= asn1_sequence_of extension

#push-options "--z3rlimit 16"

#push-options "--fuel 0 --z3rlimit_factor 2"
let x509_TBSCertificate
= asn1_sequence [
"version" *^ (PLAIN ^: (mk_prefixed (mk_custom_id CONTEXT_SPECIFIC CONSTRUCTED 0) version));
Expand All @@ -578,14 +579,13 @@ let x509_TBSCertificate
"extensions" *^ (OPTION ^: (mk_prefixed (mk_custom_id CONTEXT_SPECIFIC CONSTRUCTED 3) extensions))]
(_ by (seq_tac ()))

#pop-options

let x509_certificate
= asn1_sequence [
"tbsCertificate" *^ (PLAIN ^: x509_TBSCertificate);
"signatureAlgorithm" *^ (PLAIN ^: algorithmIdentifier);
"signatureValue" *^ (PLAIN ^: asn1_bitstring)]
(_ by (seq_tac ()))
#pop-options

// let's go boom!

Expand All @@ -605,4 +605,4 @@ let parse_cert (b:bytes) = x509_certificate_parser b
iota;
primops]]
let dparse_cert (b:bytes) = dasn1_as_parser x509_certificate b

#show-options
Loading
Loading